0

我想检查tbl“是否存在数据?”。如果 tbl 中不存在数据,我想重定向到一页。如果不在所有控制器的操作中放置相同的代码,我该怎么办?

if(Company::model()->exists() == false)
            $this->redirect(array('site/create'));
4

2 回答 2

1

如果您想在每个控制器的每个操作之前运行此逻辑,您可以覆盖run基本控制器类的方法(通常这被命名为Controller;您会在protected/components/目录中找到它)。

以下是如何执行此操作的示例:

public function run($actionID) {
    if ($this->route != 'site/create' && Company::model()->exists() === false) {
        $this->redirect('site/create');
    }
    else {
        parent::run($actionID);
    }
}
于 2012-11-01T09:29:04.947 回答
0

所以你想执行一个查询,如果没有结果重定向到另一个页面?

$model = YourModel::model()->find("your query goes here");

if (empty($model)){
    $this->redirect("redirect/url/here");
}

如果您想在每个“加载”页面上执行此操作,您可以通过创建如下所示的init函数将其放入 Controller.php(protected/components/Controller.php ):

public function init() {
    // anything here will be executed when any controller/action is called
}
于 2012-11-01T09:08:25.610 回答