Soru Yii çerçevesi: Denetleyici / Eylem URL'si ve parametreleri


Benim başvurumda ApiController ile actionUsersYani YII’de yol api/users. Şimdi belirli kullanıcı bilgilerini almak için aşağıdaki yolu kullanıyorum api/users/id/10 10 kullanıcı kimliği ve id Yolun bir kısmı temel olarak bir GET parametresidir (api/users?id=10).

Olmadan aynı şeyi yapmak için herhangi bir yolu var mı id yolun bir kısmı, yani yolumun nasıl görünmesini istiyorum api/users/10?

Teşekkür ederim!


18
2018-05-03 20:08


Menşei




Cevaplar:


UrlManager bileşeninde kural kalıplarını yerleştirmeniz gerekecek:

Yii Çerçeve Belgeleri: url

Yapılandırmanız şöyle bir şeye benzemelidir:

array(
    ......
    'components'=>array(
        ......
        'urlManager'=>array(
            'urlFormat'=>'path',
            'rules'=>array(
                'api/users/<id>'=>'api/users',
            ),
        ),
    ),
);

Daha sonra değeri şu şekilde alabilirsiniz:

$id = Yii::app()->getRequest()->getQuery('id');

23
2018-05-07 06:48



Yii'nin bu eşleştirmeyi örtük olarak yapmaması çok ayıp. Vakaların% 95'i için, / kullanıcı / görünüm / 1 / Yii'ye bu bağlantıyı yapmak için talimat vermek zorunda kalmadan UserController :: view ($ id) 'e gitmelidir. - Matt Eskridge


Bunu dene......

$id = Yii::app()->request->getParam('id');

3
2017-12-20 08:15



Eğer kullanıcı kimliği değiştirirse yapılabilir, o zaman aynı zamanda eyleme de gitmeli ve aynı eylemde değil mi? - Ankita
bak - yiiframework.com/doc/api/1.1/CHttpRequest#getParam-detail - killlinuxkill


@ shiki'nin cevabına ek olarak bunu da yapabilirsiniz

array(
    ......
    'components'=>array(
        ......
        'urlManager'=>array(
            'urlFormat'=>'path',
            'rules'=>array(
                'api/users/<id>'=>'api/users',
            ),
        ),
    ),
);

ve eylemde

public function actionUsers($id=null)  // argument variable should same as in urlmanager
    {
     echo $id;
    }

0
2017-09-16 08:06