Silverstripe URL如何工作?

Mad*_*ota 2 php url-routing silverstripe

我是Silverstripe Framework/CMS的新手.我将其./mysite/code/Page.php视为控制器和./themes/simple/...模板目录.我登录管理面板并添加了新test页面.菜单显示在网站上,http://example.com/test并显示URL 和内容.

所以我想知道的是,如何访问新控制器Download.ss.我想访问URL http://example.com/download/123/而不download在管理面板中添加新页面.谢谢.

drz*_*zax 5

首先,任何带.ss扩展名的文件都是模板文件而不是控制器.

创建一个mysite/code/Download.php扩展的新类Controller.

class Download extends Controller {
    public function index() {
        // Automatically handles URLs like http://example.com/Download
    }

    public function exampleaction() {
        // Automatically handles URLs like http://example.com/Download/exampleaction
    }
}
Run Code Online (Sandbox Code Playgroud)

之后,您需要routes.yml在mysite/_config目录中添加一个新文件,以指定index新控制器上的函数应该处理调用http://example.com/download/123.

---
Name: downloadrules
---
Director:
  rules:
    'download/$ID': Download
Run Code Online (Sandbox Code Playgroud)

现在,您可以$this->request->param('ID')在index函数中访问示例URL的"123"部分.

现在你可以这样做:

class Download extends Controller {
    public function index() {
        $fileID = $this->request->param('ID');
        // Do your thing.
    }
}
Run Code Online (Sandbox Code Playgroud)

有关此内容的文档,请访问http://doc.silverstripe.org/framework/en/reference/director