yii - urlManager规则上的可选参数

标签 yii parameters yii-url-manager

我使用了Yii::app()->request->getParam(),所以我可以拥有一个像/listings/amenities/1这样的友好网址。

我在 Controller 上执行了3个操作,这些操作获得了参数$property_id = Yii::app()->request->getParam('property_id')

这两个 Action amenitiesmeals都可以正常工作,但是在上一个 Action photos中,var property_id的值为空。

我尝试删除照片规则中的第二个参数,并且一切正常。在不删除第二个参数gallery_id的情况下如何解决此问题?

以下是urlmanager规则:

'urlManager'=>array(
            'urlFormat'=>'path',
            'showScriptName' => false,
            'rules'=>array(
                'listings/amenities/<property_id>'=>'listings/amenities',
                'listings/meals/<property_id>'=>'listings/meals',
                'listings/photos/<property_id>/<gallery_id>'=>'listings/photos',
             ),
         ),

[编辑]
我认为解决方案涉及如何正确设置可选参数的规则,以处理listings/photos/1listings/photos/1/2之类的请求。添加或符号不能解决它。
'listings/photos/<property_id>/<gallery_id>'=>'listings/photos'

最佳答案

您是否尝试过使用两个规则?将较长的规则放在第一位:

'listings/photos/<property_id:\d+>/<gallery_id:\d+>' => 'listings/photos',
'listings/photos/<property_id:\d+>' => 'listings/photos',

在您的操作中,将galleryId设置为null:
public function actionPhotos($propertyId, $galleryId = null) {

关于yii - urlManager规则上的可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25745249/

相关文章:

Javascript 与 PHP——框架与库

php - 如何检查模型的任何字段是否为空或为空?

yii - 如何在 yii 上使用 where 子句?

javascript - 更改方法的可选参数值时出错

php - Yii GridView 显示来自两个模型的数据

PowerShell - 访问从 Windows cmd shell 发送的脚本参数

javascript - 如何在 HTML 属性内的函数调用中将变量作为参数传递?

Yii2 清理 URL 和操作参数

php - 除了带有 id 的 url 之外,YII url 管理工作