cake php是什么,2.0Beta中的Cake PHP路由问题

我正在将开发站点升级到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具有用于路由的缓存.

标签:cakephp,php,cakephp-routing

来源: https://codeday.me/bug/20191102/1990591.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值