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 |