Yii 2可选参数

mez*_*lad 3 php yii yii2 yii-url-manager

好的,我正在将应用程序从yii 1.1转换为yii 2,不幸的是,我无法弄清楚如何在URL路由中使用可选参数。即使当我在配置中的urlmanager中设置默认值时,如果没有第一个参数,我也无法声明第二个参数,否则最终会出现404错误。

有没有办法复制可选的url参数规则,例如

array( '<controller:\w+>/<action:\w+>?(/<status>)?',
'pattern' => '<controller>/<action>'                   
),
Run Code Online (Sandbox Code Playgroud)

在yii 2中?

Ced*_*edX 5

这在文档中不是很清楚(请参阅http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html),但是答案是:

默认情况下,规则中声明的所有参数都是必需的。如果请求的URL不包含特定参数,或者正在创建的URL中没有特定参数,则该规则将不适用。要使某些参数成为可选参数,可以配置规则的defaults属性。此属性中列出的参数是可选的,当不提供时将采用指定的值。

因此,您的路线必须表示为:

array(
  'pattern' => '<controller:\w+>/<action:\w+>/<status>',
  'route' => '<controller>/<action>',
  'defaults' => array('status' => '<a default value for status>')
)
Run Code Online (Sandbox Code Playgroud)