web-dev-qa-db-ja.com

Yiiフレームワーク:コントローラー/アクションのURLとパラメーター

私のアプリケーションでは、ApiControlleractionUsersがあるので、YIIパスはapi/usersになります。特定のユーザー情報を取得するために、私は次のパスapi/users/id/10を使用します。10はユーザーIDで、パスのidの部分は基本的にGETパラメーター(api/users?id=10)です。

パスのid部分なしで同じことを行う方法はありますか?つまり、パスをapi/users/10のように見せたいですか?

ありがとうございました!

18
Peterim

UrlManagerコンポーネントにルールパターンを入力する必要があります。

Yiiフレームワークドキュメント:url

設定は次のようになります。

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

次に、次の方法で値を取得できます。

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

これを試して......

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

@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;
    }
0
Manoj Kumar