我如何在 Zend Framework 3 中正确重定向?
How do i correctly redirect in Zend Framework 3?
我有一个带有以下代码的控制器来显示一个可以搜索和过滤的列表:
public function listAction() {
if($this->getRequest()->isPost()) {
$post = array_filter($this->getRequest()->getPost()->toArray(), function($value) {
return ($value !== null && $value !== false && $value !== '');
});
$this->redirect()->toRoute('myRoute/list', $post);
}
$filter = $this->params()->fromRoute();
// Get correct Data and display as list
}
我的路线:
'myRoute' => [
'type' => Literal::class,
'options' => [
'route' => '/myRoute',
'defaults' => [
'controller' => Controller\MyController::class,
'action' => 'index',
],
],
'may_terminate' => false,
'child_routes' => [
'list' => [
'type' => Segment::class,
'options' => [
'route' => '/list[/page/:page][/search/:search][/type/:type]',
'defaults' => [
'controller' => Controller\MyController::class,
'action' => 'list',
'page' => 1
],
],
],
... other routes
Get-Requests 工作正常,我的页面在几毫秒内加载。但是当 posting 数据时,页面加载约 5 分钟。之后它最终也会重定向并显示正确的页面。
奇怪的是,代码在某些机器上运行正常,但在其他机器上 post -> 重定向运行约 5 分钟。这些机器安装了相同的 OS 和浏览器版本。
我是否错误地使用了重定向?
您需要添加return
所以尝试:
return $this->redirect()->toRoute('myRoute/list', $post);
我有一个带有以下代码的控制器来显示一个可以搜索和过滤的列表:
public function listAction() {
if($this->getRequest()->isPost()) {
$post = array_filter($this->getRequest()->getPost()->toArray(), function($value) {
return ($value !== null && $value !== false && $value !== '');
});
$this->redirect()->toRoute('myRoute/list', $post);
}
$filter = $this->params()->fromRoute();
// Get correct Data and display as list
}
我的路线:
'myRoute' => [
'type' => Literal::class,
'options' => [
'route' => '/myRoute',
'defaults' => [
'controller' => Controller\MyController::class,
'action' => 'index',
],
],
'may_terminate' => false,
'child_routes' => [
'list' => [
'type' => Segment::class,
'options' => [
'route' => '/list[/page/:page][/search/:search][/type/:type]',
'defaults' => [
'controller' => Controller\MyController::class,
'action' => 'list',
'page' => 1
],
],
],
... other routes
Get-Requests 工作正常,我的页面在几毫秒内加载。但是当 posting 数据时,页面加载约 5 分钟。之后它最终也会重定向并显示正确的页面。
奇怪的是,代码在某些机器上运行正常,但在其他机器上 post -> 重定向运行约 5 分钟。这些机器安装了相同的 OS 和浏览器版本。
我是否错误地使用了重定向?
您需要添加return
所以尝试:
return $this->redirect()->toRoute('myRoute/list', $post);