Как правильно перенаправить в Zend Framework 3? - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть контроллер со следующим кодом для отображения списка, который можно искать и фильтровать:

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:

'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 работают правильно, и моя страница загружается в течение нескольких мс. Но при публикации данных страница загружается в течение ~ 5 минут. После этого он в конечном итоге будет перенаправлен и покажет правильную страницу.

Странно то, что на некоторых машинах код работает, а на других перенаправление post -> длится ~ 5 минут. На компьютерах установлены одинаковые ОС и сборки браузера.

Я неправильно использую перенаправление?

1 Ответ

0 голосов
/ 12 ноября 2018

нужно добавить return

так что попробуйте:

 return $this->redirect()->toRoute('myRoute/list', $post);
...