Silverstripe URL如何工作?

时间:2012-11-13 06:11:11

标签: php url-routing silverstripe

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

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

1 个答案:

答案 0 :(得分: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
    }
}

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

---
Name: downloadrules
---
Director:
  rules:
    'download/$ID': Download

现在,$this->request->param('ID')功能中index可以访问示例网址的“123”部分。

现在你可以做到:

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

此内容的文档位于http://doc.silverstripe.org/framework/en/reference/director