我使用了Yii::app()->request->getParam()
,所以我可以拥有一个像/listings/amenities/1
这样的友好网址。
我在 Controller 上执行了3个操作,这些操作获得了参数$property_id = Yii::app()->request->getParam('property_id')
。
这两个 Action amenities
和meals
都可以正常工作,但是在上一个 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/1
和listings/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/