我在Cake 3中遇到问题,我想让控制器检查一下它的关联表是否为空。如果是,它应转发/添加而不是列出空索引页。
现在,网址/introduction/index
显示一个空的索引页面,我希望用户能够自动重定向到/introduction/add
,以便他们可以继续添加条目。
如果DB的id列有条目,则它们应保留在索引处。希望这是有道理的。
我在introductionController.php中尝试了以下内容:
public function emptycheck()
{
$introduction = $this->Introduction->get($id);
if ($id = null) {
return $this->redirect(['action' => 'add']);
} else {
return $this->redirect(['action' => 'index']);
}
}
它没有任何作用,但我对它没有产生错误这一事实感到安慰。如果没有记录和重定向,我怎么能检查?
答案 0 :(得分:2)
在CakePhp中,有使用的isEmpty()方法。
$results = $this->Introduction->find('all');
if ($results->isEmpty()) {
return $this->redirect(['action' => 'add']);
} else {
return $this->redirect(['action' => 'index']);
}
有相关文档here
我在这里看到的另一个问题是,配置不遵循CakePhp约定,关于使用复数和单数形式的名称。这些约定为here
答案 1 :(得分:1)
这在控制器中起作用,附加了index()函数,如下所示:
public function index()
{
$this->set('introduction', $this->paginate($this->Introduction));
$this->set('_serialize', ['introduction']);
$introduction = $this->Introduction->find()->all();
if ($introduction->isEmpty()) {
return $this->redirect(
['controller' => 'Introduction', 'action' => 'add']
);
} else {
return $this->redirect('/introduction/index');
}
}
感谢您的帮助。