如何在CakePHP中执行控制器操作
我正在使用CakePHP 1.2。我正在研究由别人编写的CakePHP代码的逻辑。我正在检查以下控制器:如何在CakePHP中执行控制器操作
<?php
// For serving up images or other files.
class ImagesController extends AppController
{
function __setupDir($destination)
{
..........
}
function view()
{
..........
}
}
?>
我知道CakePHP有一些约定,用于定义在请求匹配URL时如何调用特定操作。例如,上面给出我的ImagesController,我需要有这样的文件:
应用程序/视图/图片/ view.ctp
那我就需要例如浏览器指向是这样的:
http://localhost/myapplication/images/view
这应该执行为上面提到的ImagesController控制器定义的“view()”函数。这就是CakePHP 1.2约定的工作原理。
根据https://book.cakephp.org/1.2/en/The-Manual/Developing-with-CakePHP/Controllers.html,“动作是用于显示视图的控制器方法,动作是控制器的单一方法。”在我的例子中,“view()”函数是一个动作,但是在我看到的应用程序中并没有用来显示视图。在我正在学习的代码中,我看到的是,有时当图片或图像加载到网站时,ImagesController控制器的“view()”功能被执行。我想明白什么触发这个“view()”函数。我知道访问http://localhost/myapplication/images/view时没有发生。有没有其他方法可以在CakePHP中执行控制器操作,特别是在CakePHP 1.2中?我只需要知道并找到触发这个“view()”函数的代码。谢谢。
我以前Debugger::trace()
检查和理解的代码。这是我的“视图()”控制器操作是如何执行。例如:
ImagesController->view('blue-theme', 'timeleft1.jpg')
core \ cake \ libs \ object.php包含这行:return $ this - > {$ method}($ params [0],$ params [1]);.不知怎么的,在我的代码中的某处,它变成了ImagesController-> view(),这就是我在我的问题中提到的view()函数的调用方式。我试图在源代码中搜索关键字“view(”),以查看在我的源代码中何时以及何时调用了这个view()函数,但是我没有办法能够在源代码与该关键字,因为如我所说,以某种方式返回$ this - > {$方法}($ params [0],$ params [1]);成为ImagesController-> view()。 –
当您打开您提供的链接时,他们会在“危险”(红色)面板中写入:“此文档适用于不再支持的CakePHP版本,请升级到更新的版本!
换句话说,它的意思是:求求你......你停止做什么,使用CakePHP的最新版本(现在是3.5)
,你会使用CakePHP 1.2学什么的很大一部分很可能弃用开始,当然不推荐使用新的PSR。
对不起兄弟! 你的问题的行动是用来显示视图不仅控制器的方法,如果你设置这个 - $> autoRender假,你的行动将不需要的观点
例如与ajax动作或当您将启动一个简单的方法不需要返回可视信息/输出(呈现视图),而只需要在当前页面中显示一条消息)。 实例或方法不需要输出(视图),但只得到了结果
- 删除的东西(一组,一个产品,一个客户端,...)
- 注销用户
- 检查如果用户使用一个授权IP地址进行连接,
- ...
如果我明白你的问题,view和功能视图()是不一样的。 视图是输出(你在屏幕上看到的) 和wiew()是一个公共函数,用于在应用程序中显示元素的细节(用户,组,产品,事件,课程等)。 ...) 当你创建一个应用程序,每一个元素/实体你会应该有一个至少CRUD功能的控制器,
- ç用于创建/插入一个新的实体(一般称为加()方法),
- R读取/选择一个实体(称为view()方法)或实体列表(称为index()方法) d),
- ù更新的元素(方法称为编辑())和
- d删除(称为方法删除())
这意味着,在用户控制器(举例来说),你会发现至少,指数(),添加()编辑(),视图()和删除()方法和additionn早已等公共功能(需要为您的应用程序或本单位),如登录(),注销(),changePassword(),resetPassword(),和callbacks方法,如beforefilter(),beforerender(),后过滤(),让你之前或之后控制器动作插入一些逻辑...
注意两两件事:
-
个
- 视图是呈现layout内,(布局是你的代码不需要从一个页面切换到另外一个部分,并认为是动态信息)
- CakePHP都有一个代码生成器(bake ),其为您创造一个单一的命令行,所有的控制器,视图,模型,...
希望它可以帮助
谢谢@Benfarhat,但这不能回答我的问题。事实上,我需要为这个特定的项目使用CakePHP 1.2,理想情况下我应该升级是一个完全不同的主题。 –
对不起@ jaime-montoya - 编辑我的回答 – Benfarhat
登录回溯自己节省了大量的时间'调试::日志(“富”)'。 ** https://book.cakephp.org/1.2/en/The-Manual/Common-Tasks-With-CakePHP/Debugging.html** – ndm
我可以在文件中使用它,例如core/cake/libs/controller /image_controller.php? –
核心文件夹中不应该有这样的文件,但通常情况下,您可以在控制器中运行该代码。 – ndm