代码之家  ›  专栏  ›  技术社区  ›  Rudiger

自定义url处理程序在仍由正确操作处理时返回404

  •  1
  • Rudiger  · 技术社区  · 6 年前

    我有行动了 details 即处理url:

    something/details/Location/6
    

    这个很好用。不过,我想把额外的细节结束,基本上为搜索引擎优化。

    我的路线上有

    ---
    Name: mysiteroutes
    ---
    Director:
      rules:
        'something//$Action/$Location/$OtherID': 'SomeController'
    

    在我的控制器里:

    private static $url_handlers = array(
        'something//$Action/$Location/$OtherID' => 'handleAction'
    );
    

    如果我转到上面的URL,它就会工作,但是如果我转到 something/details/Location/6/test 它返回404,即使操作仍在加载中,并用 renderWith()

    我怎样才能让它工作?我也不在乎身份证之后的细节。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Bai Nguyen    6 年前

    我想你终于可以多加一个参数了

    ---
    Name: mysiteroutes
    ---
    Director:
      rules:
        'something': 'SomeController'
    

    还有你的控制器

    private static $allowed_actions = array('details');
    private static $url_handlers = array(
        'details/$Location/$OtherID/$otherParam' => 'details'
    );
    public function details() {
        $this->getRequest()->param('otherParam');
        /* more processing goes here */
    }
    

    https://docs.silverstripe.org/en/3/developer_guides/controllers/routing/