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中?
这在文档中不是很清楚(请参阅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)