2016-11-11 8 views
0

Здравствуйте, ребята, я новичок в Zendframework2.Доступ к идентификатору paginator в контроллере

У меня есть следующие строки в view\partial\paginator.phtml

<a href="<?php echo $this->url($this->route);?>?page=<?php echo $page; ?>?id=<?php echo $this->id?>"> 

В браузере это выглядит как http://new_project.localhost/districts?page=2?id=4

new_project это название моего проекта, районов является маршрут контроллера и в id=4, 4 является идентификатор, который Я хочу получить доступ к контроллеру.

Я пробовал:

$_GET['id'];        

$this->params()->fromRoute('id'); //also 

$this->params()->fromQuery('id'); //also 

Но не из этих работ.

Как я могу получить доступ к этому id в контроллере?

ответ

0

решаю, просто поставив условие, как показано ниже:

if (isset($_GET['id'])) 
{ 
    // perform operation here.  
} 
0

Не стройте свой элемент тег HREF себя, но использовать эту структуру, как вы должны.

Url хелперов вид:

// $this->url($routeName, $routeParams, $options, $reuseMatchedParams = false) 
$this->url('my/route', ['id' => $object->getId()], ['query' => ['page' => $page]]) 

контроллер плагин:

$this->params('id') // will take ID either from routeParameters or queryParameters. 
$this->params()->fromRoute('id') // will take the id from the routeParameters 
$this->params()->fromQuery('page') // will take the page from the route query 

Так что, когда у вас есть маршрут с routeParameter идентификатором, но ваш запрос также имеет идентификатор в это запрос его лучшая практика продолжать использовать $this->params()->fromRoute('id') или $this->params()->fromQuery('id'), чтобы вы всегда знали, откуда взялось это значение, вместо использования $this->params('id').

Как и с плагином params, вы также можете определить значения по умолчанию для второго аргумента, например: $this->params()->fromQuery('page', 1). Таким образом, страница всегда будет 1, если пользователь ее не предоставил. По умолчанию второй аргумент равен null. Надеюсь, что это помогает и делает вас прекратить использование $_GET['bla']

0

Я думаю, что ваш URL должен выглядеть следующим образом:

http://new_project.localhost/districts?page=2&id=4 
              ^
             not ? 

Из-за ошибки вы сделали анализатор, вероятно, не анализирует идентификатор в ваших URL правильно то есть вы не может получить к нему доступ, как вы пробовали.

Было бы лучше использовать the url view helper для отображения параметров запроса в URL-адресе, тогда вы не допустили бы такую ​​ошибку. Вы можете проверить this post на StackOverflow для справки о том, как добавить параметры запроса к URL-адресу, используя помощник просмотра URL-адресов. В вашем случае это будет выглядеть примерно так:

<?php 
    $href = $this->url($this->route, [], ['query' => [ 
     'page' => $page, 
     'id' => $id, 
    ]]); 
?> 
<a href="<?php echo $href ?>"> 

Теперь вы получите правильный URL:

http://new_project.localhost/districts?page=2&id=4 

Значение СА также удается правильно разобрать идентификатор. Теперь вы должны быть в состоянии получить доступ к нему, как вы пытались с:

$this->params()->fromQuery('id'); //returns your id from the url 
Смежные вопросы