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

时间:2014-06-01 13:38:31

标签: php cakephp view controller

我正在与CakePHP合作几周。我用Console创建了CRUD功能和分页。对于布局我使用了bootstrap的插件。该网站旨在促进竞争过程。 现在我有一个问题:在我的例子中,有不同的用户角色。对于一个角色,我们需要一个在16个视图中使用的函数,每次都是另一个表内容。但我不能写相同的功能16次?谢谢你的建议:)

2 个答案:

答案 0 :(得分:0)

在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();
    }
}

答案 1 :(得分:0)

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

//例 桌子( 名字, 姓, 1号, 2号, number3的, 等等......)

//在控制器中       dosomething(){}

//在视图中 dosomething.ctp(firstname,lastname,number1) dosomething1.ctp(firstname,lastname,number2) dosomething2.ctp(名字,姓氏,号码3)

在结束时,我将有一个函数,用这个数字来计算 在一个新视图:)

我搜索类似的东西:

 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());
}

但它并不是那样的:(