如何将URL变量传递给Silverstripe中的表单

Bar*_*vet 4 php silverstripe

我正在开发一个应该能够处理以下URL的自定义电子邮件表单:

http://www.example.com/email
Run Code Online (Sandbox Code Playgroud)

默认为常规电子邮件地址.

http://www.example.com/email/Office/1
Run Code Online (Sandbox Code Playgroud)

从Office模型ID 1获取电子邮件联系人详细信息

http://www.example.com/email/Staff/96
Run Code Online (Sandbox Code Playgroud)

从员工模型,ID 96获取电子邮件联系详细信息

我想我可以通过访问正常的$ Action/$ ID变量来做到这一点 - 但是完全被路由文档弄糊涂了:https://docs.silverstripe.org/en/3.3/developer_guides/controllers/routing/

class EmailPage_Controller extends Page_Controller
{

  private static $allowed_actions = array(
    'Form',
    'Staff',
    'Office'
    );

  public function Form() { 

    $Action = $this->request->getVar('Action');
    $ID = $this->request->getVar('ID');  
Run Code Online (Sandbox Code Playgroud)

不行.

在Silverstripe中访问/传递URL变量到表单的最佳方法是什么?

小智 5

$ID = $this->request->param('ID');
Run Code Online (Sandbox Code Playgroud)

这将从Url参数中获取您在路由或$ url_handlers中定义它们的ID.使用相同的方法获取action参数.