如何正确设置Silvertripe路由和控制器和页面?我按照开发人员文档进行了操作,如下所示,
TestController.php
class TestController extends Controller {
private static $allowed_actions = array(
'test'
);
public function test(SS_HTTPRequest $request) {
print_r('Executing Test Controller inside TestController');
}
}
routes.yml
---
Name: mysiteroutes
After: framework/routes#coreroutes
---
Director:
rules:
'test/': 'TestController'
输入时我的网址为http://127.0.0.1/silverstripe/test/。
但是来自测试控制器的print_r也没有出现也返回$ this-> renderWith(" Test")不起作用。有一个实际的Test.ss。
这就是输出
入门
开始使用SilverStripe框架:
Create a Controller subclass (doc.silverstripe.org/framework/en/topics/controller)
Setup the routes.yml to your Controller (doc.silverstripe.org/framework/en/reference/director#routing).
Create a template for your Controller (doc.silverstripe.org/framework/en/reference/templates)
社区资源
silverstripe.org/forum Discussion forums for the development community.
silverstripe.org/irc IRC channel for realtime support and discussions.
doc.silverstripe.org Searchable developer documentation, how-tos, tutorials, and reference.
api.silverstripe.org API documentation for PHP classes, methods and properties.
答案 0 :(得分:1)
Director.rules配置test: TestController
将'/ test / $ Action'模式的任何URL绑定到TestController。默认操作称为index
。
因此,如果您只想处理一个操作,那么您不需要$ allowed_actions,并将test
方法重命名为index
。
您当前的控制器test
方法处理/test/test
请求。
默认模板名称是使用模式TemplateName_Controller从控制器名称确定的。下划线字符拆分名称,相当于调用$this->renderWith(['TemplateName','Controller'])
。
在您的情况下,默认控制器模板是“TestController.ss”,自定义操作模板可能是“TestController_Test.ss”(作为模式{$DefaultTemplate}_{$Action}.ss
)
您可以使用?debug=1
和?debug_request=1
查询参数调试您的请求。