2013-03-01 2 views
2

Я только начинаю работать с Zend framework 2, и это кажется простой задачей, но по какой-то причине это не работает.ZF2 fromQuery() возвращает пустой массив

Я пытаюсь просто получить параметры запроса: controller/action?name=something

Я попытался с помощью:

$this->params()->fromQuery() 
$this->plugin('params')->fromQuery(); 

Что я полагаю, что оба одинаковы, однако оба возвращают пустые массивы, когда у меня есть параметры задавать.

Мой маршрут выглядит следующим образом:

 'users' => array(
      'type' => 'Zend\Mvc\Router\Http\Literal', 
      'options' => array(
       'route' => '/users/search', 
       'defaults' => array(
        'controller' => 'Module\Controller\Users', 
        'action'  => 'search', 
       ), 
       'may_terminate' => true, 
       'child_routes' => array(
        'query' => array(
         'type' => 'Query', 
        ), 
       ), 
      ), 
     ), 

Любые идеи, что я делаю неправильно?

ответ

0
$this->_request->getParam('name'); 

Я думаю, что это будет работать ..

+0

Это не было определено и GetParam не является частью объекта запроса, однако я попробовать: '$ запрос = новый запрос(); $ request-> getQuery() 'но безрезультатно – dzm

2

Я думаю, что вы хотите использовать плагин Params listed on this page.

Вы могли бы попробовать (я тяну это из плагина код $ паров должны быть null, на самом деле.):

$this->getController()->getRequest()->getQuery($param, $default)->toArray(); 

fromQuery() просто оболочка для выше (см это на line 88 here), хотя так что если не работать для вас это не может (если проблема не будет с плагином не загружен или реализованным правильно):

$this->params()->fromQuery(); 
+0

Спасибо, поэтому в контроллере я использовал' $ this-> getRequest() -> getQuery() -> toArray() ', но не кубик. Теперь я думаю, что это, вероятно, проблема с конфигурацией nginx: \ – dzm

+0

Это возможно, так как ваша первоначальная попытка с '$ this-> params() -> fromQuery();' действительно должна была работать. – Stuart

+0

Да, хорошо, я буду работать с ним завтра и обновляю здесь, если это все решает. – dzm

2

Я полагаю, что у вас есть проблемы в вашем Nginx конфигурации.

Просто добавьте $is_args$args в location / раздел:

location/{ 
    try_files $uri $uri/ /index.php$is_args$args; 
} 

И перезапустить Nginx sudo /etc/init.d/nginx restart

+0

Google, stackoverflow и ваш ответ = здорово! ;) – timoziemann