我正在使用CakePHP 1.2。我正在研究其他人编写的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()”函数的代码。谢谢。
答案 0 :(得分:1)
当您打开您提供的链接时,他们会在“危险”(红色)面板中写入:“此文档适用于不再受支持的CakePHP版本。请升级到较新版本!”
换句话说,它意味着:请...停止你做的事情并从最新版本的cakephp开始(现在是3.5)
您将通过cakephp 1.2学到的很大一部分内容可能已被弃用,肯定不会推荐使用新的PSR。
抱歉兄弟! 对于你的问题,动作不仅是用于显示视图的控制器方法,如果你将$ this-&gt; autoRender设置为false,你的动作将不需要视图
例如,使用ajax操作或者您将启动一个不需要返回可视信息/输出(以呈现视图)但只需要在当前页面中显示单个消息的简单方法。 不需要输出(视图)但只获得结果的示例或方法
如果我理解你的问题, view和功能视图()不一样。 视图是输出(您在屏幕上看到的内容) 和wiew()是一个公共函数,用于显示应用程序中元素的细节(用户,组,产品,事件,课程......) 在创建应用程序时,对于每个元素/实体,您应该拥有一个具有最少CRUD个函数的控制器,
这意味着在您的用户控制器(例如)中,您至少会找到索引(),添加()编辑( ),查看()和删除()方法以及其他公共功能(您的应用程序或此实体所需),例如登录(), 退出(), changePassword (), resetPassword ()以及 beforefilter 等callbacks方法( ), beforerender (), afterfilter (),允许您在控制器操作之前或之后插入一些逻辑......
注意事项:
答案 1 :(得分:0)
我使用Debugger::trace()
来检查和理解代码。这就是我的“view()”控制器动作的执行方式,例如:
ImagesController->view('blue-theme', 'timeleft1.jpg')