Cakephp - 多个视图一个控制器-功能

Posted

技术标签:

【中文标题】Cakephp - 多个视图一个控制器-功能【英文标题】:Cakephp - multiple views one controller-Function 【发布时间】:2014-06-01 13:38:31 【问题描述】:

我使用 Cakephp 已经有几个星期了。我用控制台创建了 CRUD 功能和分页。对于布局,我使用了 bootstrap 中的插件。该网站旨在促进竞争过程。 现在我有一个问题:在我的示例中,有不同的用户角色。对于一个角色,我们需要一个在 16 个视图中使用的函数,只是每次另一个表内容。但是我不能写同一个函数16次?谢谢你的建议:)

【问题讨论】:

【参考方案1】:

在 AppController 中添加该功能,由每个控制器扩展。

AppController 示例

App::uses('Controller', 'Controller');
class AppController extends Controller 
    public $components = array('DebugKit.Toolbar');

    function usedInDifferentControllers($param1, $param2)
        //code
    

PagesController 示例

App::uses('AppController', 'Controller');
class PagesController extends AppController 
    function action_name()
        //call the function from  AppController
        $this->usedInDifferentControllers($param1, $param2); 
    

    //optionally, you can override the method if required for each controller
    function usedInDifferentControllers()
        parent::usedInDifferentControllers();
    

【讨论】:

【参考方案2】:

也许我说错了:在16个视图中使用的动作,每次都需要另一个表记录。我的意思是它的同一张表,但该表中的另一条记录:/ 所以我只有一张桌子!功能(动作)总是一样的。

//示例 桌子 ( 名, 姓, 1号, 2号, 编号 3, 等等……)

//在控制器中 做某事()

//在视图中 dosomething.ctp(名字,姓氏,数字1) dosomething1.ctp(名字,姓氏,数字2) dosomething2.ctp (firstname, lastname, number3)

最后我会有一个函数,它会用这个数字进行计算 在一个新的观点:)

我搜索类似的东西:

 public function index() 
    // 0 CakePHP fetches Group data and its domain

        $groupId=$this->Auth->user('User.role_id');
   if($groupId==1) $this->view='viewA';
   else if($groupId==4) $this->view='ViewB';

    $participants = $this->Participant->recursive = 0;
        $this->set('participants',$this->Paginator->paginate());

但它不是那样工作的:(

【讨论】:

以上是关于Cakephp - 多个视图一个控制器-功能的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP4 Ajax:从控制器发送到视图

将数据从 cakephp 视图传递给控制器

如何在 cakephp 中为不同的模型设置不同的布局

从 url 中删除控制器名称不适用于 cakephp 中的多个控制器

cakephp 2 上的自动完成 Ajax

如何在 CakePHP 控制器中使用多个模型