2.0Beta中的Cake PHP路由问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了2.0Beta中的Cake PHP路由问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2953字,纯文字阅读大概需要5分钟。
内容图文
![2.0Beta中的Cake PHP路由问题](/upload/InfoBanner/zyjiaocheng/673/a686fe18f6b64b15bf5142d525e8f9d5.jpg)
我正在将开发站点升级到Cake 2.0 Beta,我的自定义路由似乎已损坏.上一个站点将url / login路由到Employees控制器action:login.这是设置路线的代码:
Router::connect('/login', array('controller' => 'employees', 'action' => 'login'));
Router::connect('/login/*', array('controller' => 'employees', 'action' => 'login'));
当Cake无法为页面找到控制器时,我收到标准错误:
Error: LoginController could not be found.
意味着它根本没有被路由; LoginController不应该被调用也不存在.我已经确认,EmployeesController中的登录功能甚至从未启动过.该页面应路由到EmployeesController login()函数,该函数生成Employees Login视图.
我是否错过了Cake处理路由的方式的变化?这里有什么问题吗?
更新:
我知道顺序对路由可能很重要,因此这是app / config / routes.php中相关路由器语句的确切顺序:
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
CakePlugin::routes();
require CAKE . 'Config' . DS . 'routes.php';
Router::connect('/', array('controller' => 'pages', 'action' => 'home'));
Router::connect('/login', array('controller' => 'employees', 'action' => 'login'));
Router::connect('/login/*', array('controller' => 'employees', 'action' => 'login'));
Router::connect('/logout', array('controller' => 'employees', 'action' => 'logout'));
还有更多的路由,但是它们全都是漂亮的URL,在这种情况下不会被调用.
另外,这是EmployeesController中的函数,用于将用户重定向到实际的/ login URL.一切正常,直到此重定向:
function doLogin() {
$goto = (isset($this->params['url']['url'])) ? $this->params['url']['url'] : '';
$goto = $goto = str_replace('/','|',$goto);
$goto = $goto = str_replace(':','~',$goto);
if (strpos($goto,'|')===0) $goto = substr($goto,1);
if ($goto) $goto = '/goto:'.$goto;
$this->redirect('/login/'.$goto);
die();
}
$goto / str_replace()只是用来构造一个在用户成功登录后转到的URL.在这种情况下不使用它,我们只是被重定向到/ login /
我现在需要以其他方式重定向吗?尽管正确的router:connect语句,此重定向是转到正确的URL,但一旦重定向到该URL,就不会再被路由了.
更新:
在routes.php中路由的顺序似乎是问题的一部分.我将/ login的路线更改为高于CAKE要求. ‘config’. DS.像这样的“ routes.php”:
Router::connect('/login', array('controller' => 'employees', 'action' => 'login'));
Router::connect('/login/*', array('controller' => 'employees', 'action' => 'login'));
require CAKE . 'Config' . DS . 'routes.php';
我已经确认,现在可以执行EmployeesController.php的“登录”操作,因此可以正确地进行路由.
但是我现在收到以下错误:
Notice (8): Undefined index: datasource [CORE\Cake\Model\ConnectionManager.php, line 252]
Errors Missing Datasource Class
Error: Datasource class was not found.
这是因为我在Cake的默认路由之前进行路由吗?我正在使用Cake的默认数据库插件(Sqlserver)进行连接,此路由更改是否中断了到数据库插件的路由?如果是其他问题,我可以创建一个单独的问题,因为如果上述修复与丢失的数据源无关,那么原始问题已得到解决.
解决方法:
不,正如我之前评论过的那样,您的路由还可以.检查我的屏幕截图.我有Cakephp 2.0 Beta,仅测试您的代码以路由到EmployeesController.也许另一个代码破坏了路由顺序,也许Cakephp 2.0具有用于路由的缓存.
内容总结
以上是互联网集市为您收集整理的2.0Beta中的Cake PHP路由问题全部内容,希望文章能够帮你解决2.0Beta中的Cake PHP路由问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。