9

我使用了,Yii::app()->request->getParam()所以我可以有一个友好的 url,比如/listings/amenities/1.

我在控制器上执行了 3 个获取参数的操作$property_id = Yii::app()->request->getParam('property_id')

这两个动作amenitiesmeals工作正常,但在最后一个动作photos中,varproperty_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/1,例如listings/photos/1/2. 添加 OR 符号并不能解决它。

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

1 回答 1

17

您是否尝试过使用两条规则?首先放置较长的规则:

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

在您的操作中,设置galleryIdnull

public function actionPhotos($propertyId, $galleryId = null) {
于 2014-09-09T14:04:49.623 回答