作为PHP的新手,我想尝试一下如果我有一个URL,最简单的方法是找到它的控制器代码?
我本地计算机上的URL类似于: 的 http://foofoofoo.local/protected/admin/org/edit/1
我已经知道这个文件的视图位置在我的机器上的这个位置: 的 /var/www/MyApp/protected/app/views/org/admin_edit.ctp
我认为我要做的是在整个代码库中搜索引用admin_edit.ctp的任何内容。我找到了两个条目,并更改了它们以查看我是否找到了调用该视图的位置,但是尽管更改了这些条目的文件名 - 当我访问该网址时该应用仍然有效: http://foofoofoo.local/protected/admin/org/edit/1
我只是想看看在网站中调用admin_edit.ctp文件的位置。
答案 0 :(得分:1)
网址:http://foofoofoo.local/protected/admin/org/edit/1
这意味着我可以假设您在/app/Config/routes.php
中添加了一条路线。由于我们无权访问此文件,因此无法说明这一点。
为什么我可以假设您已将此添加到路线中?因为发布的URL与CakePHP Conventions不匹配,后者明确指出控制器应该以复数形式定义。由于URL将直接通过Controller访问Controller,除非指定了路由,否则我知道OrgController
不存在。为什么呢?
试试Inflector::pluralize('Org')
。它会将'Orgs'返回给你。因此意味着控制器应该被称为OrgsController
,您应该通过以下URL访问该控制器。
在此OrgsController
中,应该有一个名为admin_edit()
的操作(功能),因为您已在org
前加上管理员,这是一个前缀。
/protected
部分也可能是网址的一部分,但不知道主/App
的位置以及网址的哪一部分指向{{ 1}}文件。
可以在/app/webroot/index.php
找到视图。
如果您仍然无法找到文件。请从Cake Community编写的Blog tutorial开始。本教程描述了所有简洁的内置技巧,并将使您的第一个应用程序在任何时间运行。请先阅读!
如果您仍然遇到问题,请随时更新您的问题并添加/app/View/Orgs/*.ctp
文件。
答案 1 :(得分:0)
在Cake 1.3下,如果您的应用程序有AppController(检查文件app/app_controller.php
是否存在),您可以将此代码放在beforeFilter
方法中:
debug($this->params);
当您处于调试模式时,它将在您的应用页面上打印一个数组,其中包含控制器的名称和使用的操作。
Array
(
...
[controller] => controller_name
[action] => action_name
...
)
如果AppController不包含任何beforeFilter
方法,您只需创建它:
function beforeFilter()
{
debug($this->params);
}