【问题标题】:CakePHP: How to use the same controller function to render 2 pagesCakePHP:如何使用相同的控制器功能来渲染 2 个页面
【发布时间】:2012-02-03 11:06:48
【问题描述】:

我希望有一个名为“index”的页面,对应的 url 为“domain/controller/index”和另一个 名为“admin_index”的页面,对应的 url 为“domain/admin/controller/index”。 诀窍是,我希望两个页面都使用相同的视图来渲染,并使用相同的逻辑函数,而页面的参数是一个标志,指示视图从哪个 url 呈现视图。

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

目前我正在使用管理员前缀来处理此类页面,方法是通过限制来自网络服务器(在我的例子中是 Apache)的访问来保护它们。

关于如何在不复制控制器功能的情况下实现这一点的任何想法?

【问题讨论】:

    标签: cakephp cakephp-1.3


    【解决方案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 视图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      • 2011-07-08
      • 1970-01-01
      • 2020-11-18
      • 2017-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多