Yii:如何命名控制器动作,因此URL包含一个数字

时间:2016-06-06 16:05:11

标签: php yii yii2

在Yii2中,默认情况下,此类网址: / foo-bar 将转换为此操作:

public function actionFooBar() {
    // ...
}

如果我希望相同的网址包含数字,如下所示: / foo-bar-3

我尝试actionFooBar3()actionFooBar_3 - 没有运气,当我访问/ foo-bar-3时会抛出404.

想法?

更新

所以,网址投了404,因为其中有一个拼写错误,经过太多工作时间我没看到。不要成为工作狂。另外,我赞成以下3个答案,因为所有答案似乎都是有效的,可能对其他人有帮助。

3 个答案:

答案 0 :(得分:1)

我认为,如果您希望实现此功能,则必须为路由创建新规则。在Yii docs中说:

  

将动作ID的每个单词中的第一个字母转换为大写

但数字不具有高等效值。如果您将操作名称定义为actionFooBar3,则可以从网址foo-bar3

中获取此操作

答案 1 :(得分:1)

这对我有用。我可以访问它。 示例https://myYii2.com/foo-bar-3

public function actionFooBar3() {
  echo "asd";die;
}

<强> web.php

检查enablePrettyUrl是否设置为true;

'urlManager' => [
      'enablePrettyUrl' => true,
],

Error: 404显示方法,您已为控制器操作设置了一些规则。

答案 2 :(得分:1)

It works FooBar3

    public function actionFooBar3()
    {
        echo "HI";
        exit;
    }

是的,请检查您是否已在控制器的行为方法中授予访问规则权限。有时它可能是个问题。