yii urlManager规则上的可选参数

wb1gzix0  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(144)

我使用了Yii::app()->request->getParam(),这样我就可以有一个友好的url,如/listings/amenities/1
我在我的控制器上得到了3个动作,它们得到了参数$property_id = Yii::app()->request->getParam('property_id')
amenitiesmeals这两个操作运行正常,但在最后一个操作photos中,变量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',
             ),
         ),

[EDIT]我认为解决方案涉及到如何正确设置可选参数的规则来处理listings/photos/1listings/photos/1/2等请求。添加OR符号并不能解决问题。

'listings/photos/<property_id>/<gallery_id>'=>'listings/photos'
e7arh2l6

e7arh2l61#

您是否尝试过使用两条规则?请先放置较长(限制性更强)的规则:

'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) {

相关问题