访问控制器中paginator的id

时间:2016-11-11 02:28:12

标签: php zend-framework2

大家好,我是Zendframework2的新手。

我在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是我想在控制器中访问的id。

我试过了:

$_GET['id'];                             

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

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

但不是这些作品。

我将如何在控制器中访问此id

3 个答案:

答案 0 :(得分:0)

我解决了这个问题,只需按照以下条件进行解决:

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

答案 1 :(得分:0)

不要自己构建你的A元素标签href但是要像你应该那样使用框架。

网址视图助手:

    foreach (StationCategory stationCategory in productCatalog.Programming.StationCategory)
     {
        StringBuilder stationList = new StringBuilder();
        foreach (var stationName in stationCategory.Station.GroupBy(x => x.Name).Select(x => x.First()))
         {
           stationList.Append(stationName + ",");
         }
         offer.FeatureList.Add(new Feature() { FeatureName = "<b>" + stationCategory.CategoryName + "</b>", Value = stationList.ToString().TrimEnd(',')});
     }

Controller插件:

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

因此,如果您的路线中包含routeParameter ID,但您的查询中还包含其ID,则查询其最佳做法是继续使用$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 $this->params()->fromRoute('id')所以你总是知道价值的来源,而不是$this->params()->fromQuery('id')

$this->params('id')插件一样,您也可以在第二个参数上定义默认值,例如:params。因此,如果用户未提供页面,则页面将始终为1。第二个参数的默认值为$this->params()->fromQuery('page', 1)。希望这会有所帮助并让您停止使用null

答案 2 :(得分:0)

我认为你的网址应该是这样的:

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

由于您所犯的错误,解析器可能无法正确解析您的网址中的ID,这意味着您无法像尝试一样访问它。

最好使用the url view helper在网址中呈现查询参数,然后你就不会犯这样的错误。您可以在StackOverflow上查看this post,以获取有关如何使用url视图助手向网址添加查询参数的参考。在你的情况下,它看起来像这样:

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

现在你得到了正确的网址:

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

这意味着解析器还设法正确解析id。 您应该能够像尝试使用它一样访问它:

$this->params()->fromQuery('id'); //returns your id from the url