Advertisement
Google Ad Slot: content-top
Zend Method Route
What is a Method Route?
A Method Route allows you to restrict the route to specific HTTP methods (like GET, POST, PUT, etc.). This is useful when you want to create different logic for different HTTP methods on the same URL path.
Use Case:
You want:
/formto render a form when visited viaGET/formto process submission when submitted viaPOST
Syntax Pattern
'type' => \Laminas\Router\Http\Method::class, 'options' => [ 'verb' => 'GET' // or 'POST', 'PUT', etc. ]
Full Example
Step 1: Route Configuration (module/Application/config/module.config.php)
'router' => [ 'routes' => [ 'form-get' => [ 'type' => \Laminas\Router\Http\Method::class, 'options' => [ 'verb' => 'GET', 'route' => '/form', 'defaults' => [ 'controller' => Controller\MainController::class, 'action' => 'show', ], ], ], 'form-post' => [ 'type' => \Laminas\Router\Http\Method::class, 'options' => [ 'verb' => 'POST', 'route' => '/form', 'defaults' => [ 'controller' => Controller\MainController::class, 'action' => 'submit', ], ], ], ], ],
Step 2: Controller Setup (module\Application\src\Controller\MainController.php)
namespace Application\Controller;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
class MainController extends AbstractActionController
{
public function showAction()
{
return new ViewModel();
}
public function submitAction()
{
$post = $this->getRequest()->getPost();
return new ViewModel(['data' => $post]);
}
}
Step 3: View Files
view/application/main/show.phtml
<h2>Contact Form</h2> <form method="post" action="/form"> Name: <input type="text" name="name"><br> <input type="submit" value="Submit"> </form>
view/application/main/submit.phtml
<h2>Form Submitted</h2> <p>Name: <?= $this->data['name'] ?? 'Not provided' ?></p>
Access in Browser
URL |
Matched |
Action Triggered |
Untitle |
|---|---|---|---|
/form |
GET |
showAction() |
show.phtml |
/form |
POST |
submitAction() |
submit.phtml |