Cakephp如何管理控制器和视图
我对CakePHP完全陌生,因此我对不同控件/视图/元素的管理工作相当困惑 问题是: 我正在尝试创建我的主页,其中包含PageController和view home.ctp。现在,我有了另一个控制器,IdeaController,它包含从数据库加载所有想法的函数Cakephp如何管理控制器和视图,cakephp,view,controller,Cakephp,View,Controller,我对CakePHP完全陌生,因此我对不同控件/视图/元素的管理工作相当困惑 问题是: 我正在尝试创建我的主页,其中包含PageController和view home.ctp。现在,我有了另一个控制器,IdeaController,它包含从数据库加载所有想法的函数 public function index() { $this->set('title_for_layout', 'Ideas'); $this->set('ideas', $this->Idea-&
public function index() {
$this->set('title_for_layout', 'Ideas');
$this->set('ideas', $this->Idea->find('all'));
}
现在,我需要从多个(最多3个)不同的视图访问Idea控制器。这样做的最佳方式是什么
谢谢你你正在走另一条路 视图无法“访问”控制器。控制器接收一个请求,告诉模型它需要从他们那里得到什么信息,并将所有必要的数据传递给视图。观点就像小洋娃娃,你可以穿上衣服,但除此之外,它们不会对你说话、玩耍或随意提问 一般来说,控制器中每个动作只有一个视图。如果您需要从不同的视图“访问”控制器,您可能会对cake感到有点困惑 在不知道您需要这样做的确切原因的情况下,我假设您想从3个不同的视图“访问”控制器,只是为了从BD获得所有想法。如果是这样,标准方法是: 1) 在适当的模型中创建函数:
//Idea Model
public function getAll() {
return $this->Idea->find('all');
}
实际上,您不需要执行该功能,因为它非常简单,但是对于更复杂的情况,如果您只想获得登录用户的想法,并且按照一定的顺序,将其封装在模型中是一种精神上明智的方法
2) 在控制器中视图需要该数据的每个操作中,您都需要这样做
public function randomAction() {
$this->set('ideas', $this->Idea->getAll());
}
3) 在每个视图中,您都会以
pr($ideas);
就这样
视图从未“访问”过控制器,因此您的问题有点令人困惑。也许你的意思是将3个视图关联到同一个动作,但是也没有理由这么做。。。或者你想在很多其他的“视图”中有一个“视图”,比如stackoverflow上的“信息”栏,它到处重复,所以你需要在很多视图中有它。如果是这样的话,那么您必须在一个元素中这样做,以重新利用“视图”——其他视图中的代码
如果你再澄清一下你想要什么,我可能会回答得更好,但我希望至少我给了你一些方向,告诉你去哪里看,或者如何去做你想做的事情。每个
视图
都必须在控制器
中有自己的方法
比如说,如果您想要ideas/index
、ideas/view/x
和ideas/add
页面,您需要创建以下方法:
class IdeasController extends AppController
{
public function index()
{
/* index stuff */
}
public function view($id)
{
/* view stuff */
}
public function add()
{
/* add stuff */
}
}
为了理解框架,建议您学习博客教程,因为之后您将非常熟悉核心概念:
祝你好运 不推荐,但有一种方法可以从视图文件中调用。是的,但由于不推荐使用这种方法,而且在大多数情况下,您可以不使用它,所以为了避免更多的混淆,我没有提到它。