Yii framework: контроллер / url действия и параметры


В моем приложении у меня есть ApiController с actionUsers, поэтому в YII путь становится api/users. Теперь, чтобы получить определенную информацию о пользователях, я использую следующий путь api/users/id/10 , где 10-идентификатор пользователя, а id часть пути-это в основном параметр GET (api/users?id=10).

Есть ли способ сделать то же самое без id части пути, то есть я хочу, чтобы мой путь выглядел как api/users/10?

Спасибо!

3 18

3 ответа:

Вам нужно будет ввести шаблоны правил в компонент urlManager:

Документация по Yii Framework: url

Ваш конфиг должен выглядеть примерно так:

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

Затем вы можете получить значение по формуле:

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

Попробуйте Это......

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

В дополнение к ответу @shiki вы также можете сделать это

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

И в действии

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