我创建了分页,并希望添加检查用户是否要访问页面,这不是现有的。例如,有10页,用户想要打开999页。我想添加错误消息,这将显示没有999页面。
我试过了(这很有用):
public function listAction() {
$page = // getting page
$pagginator = // setting paginator
// this part will add message to the flashMessanger
if($page > $paginator->count()) {
$message = 'There are no such page';
$this->flashMessenger()->addMessage($message);
return $this->redirect()->toRoute('zfcadmin/news');
}
return new ViewModel(array(
'news' => $paginator,
));
}
这是有效的代码。这是list
操作的代码。当我在浏览器中键入以下内容时执行此操作:example.com/admin/news
。如果我要输入example.com/admin/news/page-500
,我们会将浏览器重定向到example.com/admin/news
,并会显示消息There are no such page
。
我想在我的网站的其他部分添加相同内容,但我在同一个控制器的index
操作中遇到了问题。这是index
操作:
public function indexAction() {
return new ViewModel(array(
'news' => $this->getItems(),
'categoryName' => null,
));
}
如您所见,我调用函数getItems()
。此功能的代码:
private function getItems($categoryId = null) {
$page = // getting page
$paginator = // getting paginator
if($page > $paginator->count()) {
$message = 'There are no such page';
$this->flashMessenger()->addMessage($message);
if($categoryId) {
return $this->redirect()->toRoute('news/category', array('category' => $categoryId));
} else {
return $this->redirect()->toRoute('news');
}
}
return $paginator;
}
我试过这个,我收到了这个错误:
致命错误:调用未定义的方法 Zend \ Http \ PhpEnvironment \ Response :: count()in F:\服务器\域\ ZF2骨架\模块\新闻\图\新闻\新闻\ index.phtml 在第32行
我意识到,这是因为我将$this->redirect
作为getItems()
函数的结果返回,并将其分配给查看变量news
。
我试过这个:
if($page > $paginator->count()) {
$message = 'There are no such page';
$this->flashMessenger()->addMessage($message);
if($categoryId) {
$this->redirect()->toRoute('news/category', array('category' => $categoryId));
} else {
$this->redirect()->toRoute('news');
}
}
我没有收到任何错误,但我没有收到消息,该页面也很糟糕。
我想......我敢打赌,这里没有人不想知道我的想法:)
请帮我解决这个问题。
如何在我的情况下正确地将重定向+写入消息发送到flashMessanger(以便我可以稍后输出)?
我理解,可以从函数get项返回数组并处理它。其中一个元素将显示zf2是否重定向,另一个将显示类别ID,第三个将包含paginator本身,但它是脏解决方案(但可能:()。