大佬教程收集整理的这篇文章主要介绍了PHP-控制器路由未按预期在Silverstripe 3.1中工作,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在设置到控制器的路由,并且不断收到404或“ silverStripe框架入门”页面.
---
Name: nzoaroutes
After: framework/routes#coreroutes
---
Director:
rules:
'view-meeTings/$Action/$type': 'ViewMeeTing_Controller'
我的控制器如下所示:
class ViewMeeTing_Controller extends Controller {
public static $allowed_actions = array('HospitalMeeTings');
public static $url_handlers = array(
'view-meeTings/$Action/$ID' => 'HospitalMeeTings'
);
public function init() {
parent::init();
if(!Member::currentUser()) {
return $this->httpError(403);
}
}
/* View a list of Hospital meeTings of a specified type for this user */
public function HospitalMeeTings(SS_httprequest $request) {
print_r($arguments, 1);
}
}
而且我创建了一个模板(ViewMeeTing.ss),该模板仅输出$Content,但是当我刷新网站缓存并访问/ view-meeTings / HospitalMeeTings / 6?flush = 1时,
我知道routes.yaml中的路由正在工作,因为如果我更改那里的路由并访问旧的URL,我会得到一个404,但是该请求似乎并未触发我的$Action …
解决方法:
您的YAML和控制器中有2条不同的规则($type与$ID).另外,我认为您不需要在YAML和Controller中都定义路由.
尝试此操作,YAML告诉SS将以’view-meeTings’开头的所有@L_874_11@发送到Controller,然后$url_handlers告诉Controller处理请求,具体取决于URL中’view-meeTings’之后的所有@L_874_11@.
routes.yaml
---
Name: nzoaroutes
After: framework/routes#coreroutes
---
Director:
rules:
'view-meeTings': 'ViewMeeTing_Controller'
ViewMeeTing_Controller.@L_197_13@
class ViewMeeTing_Controller extends Controller {
private static $allowed_actions = array('HospitalMeeTings');
public static $url_handlers = array(
'$Action/$type' => 'HospitalMeeTings'
);
public function init() {
parent::init();
if(!Member::currentUser()) {
return $this->httpError(403);
}
}
public function HospitalMeeTings(SS_httprequest $request) {
}
}
以上是大佬教程为你收集整理的PHP-控制器路由未按预期在Silverstripe 3.1中工作全部内容,希望文章能够帮你解决PHP-控制器路由未按预期在Silverstripe 3.1中工作所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。