如果页面为空,如何重定向

时间:2015-09-08 19:49:57

标签: php cakephp cakephp-3.0

我在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']);
    }
}

它没有任何作用,但我对它没有产生错误这一事实感到安慰。如果没有记录和重定向,我怎么能检查?

2 个答案:

答案 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');
    }
}

感谢您的帮助。