大家好,我是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
答案 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