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