CakePHP:如何使用相同的控制器函数来渲染2页

时间:2012-01-05 16:06:33

标签: cakephp cakephp-1.3

我希望有一个名为“index”的页面,其中包含相应的url“domain / controller / index”和另一个 名为“admin_index”的页面,其对应的URL为“domain / admin / controller / index”。 诀窍在于我希望两个页面都使用相同的视图进行渲染,并且逻辑的功能相同,而页面上的参数是一个标志,指示视图从哪个URL呈现视图。

我需要它,因为目前在我的“索引”页面中我有数据表。 该页面还有一个用于该页面的智能过滤器,它需要在控制器端有相当数量的逻辑。 我的问题是,目前每行都有一个“编辑”按钮,我不想与所有用户分享。

目前我正在使用admin前缀来处理这类页面,方法是通过限制来自Web服务器的访问来保护它们(在我的情况下是Apache)。

如何实现这一点而不重复控制器功能?

1 个答案:

答案 0 :(得分:1)

试试这个(我在我的CakePHP 2.0.x应用程序上测试过,但是这段代码中没有任何内容应该是2.0特定的):

//controller
public function index($admin = false) {
    $this->set(compact('admin'));
}
public function admin_index() {
    $this->index(true); //calls the index function to do all that stuff
    $this->render('index'); //tells it to render the 'index' view
}

当您点击/index页面时,一切都应该正常。当您点击admin_index时,它会运行index函数中的逻辑,然后指定使用index视图。