如何正确设置Silvertripe路由和控制器和模板

时间:2016-03-18 02:08:20

标签: php yaml silverstripe

如何正确设置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.

1 个答案:

答案 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查询参数调试您的请求。