Zend Basic Tutorial
Zend Forms
Zend Database
Zend Advanced
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.
You want:
/form
to render a form when visited via GET
/form
to process submission when submitted via POST
'type' => \Laminas\Router\Http\Method::class, 'options' => [ 'verb' => 'GET' // or 'POST', 'PUT', etc. ]
'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', ], ], ], ], ],
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]); } }
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>
URL |
Matched |
Action Triggered |
Untitle |
---|---|---|---|
/form |
GET |
showAction() |
show.phtml |
/form |
POST |
submitAction() |
submit.phtml |