【问题标题】:Yii framework: Controller/Action url & parametersYii 框架:Controller/Action url & 参数
【发布时间】:2011-02-15 04:40:40
【问题描述】:

在我的应用程序中,我有ApiControlleractionUsers,所以在YII 中路径变为api/users。现在为了获取某些用户信息,我使用以下路径api/users/id/10,其中 10 是用户 ID,id 路径的一部分基本上是一个 GET 参数(api/users?id=10)。

如果没有id 部分路径,是否有任何方法可以做同样的事情,即我希望我的路径看起来像api/users/10

谢谢!

【问题讨论】:

    标签: php url path yii


    【解决方案1】:

    你需要在 urlManager 组件中加入规则模式:

    Yii Framework Documentation: url

    您的配置应如下所示:

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

    然后您可以通过以下方式获取值:

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

    【讨论】:

    • 遗憾的是,Yii 没有为你隐式地做这个映射。在 95% 的情况下,/users/view/1/ 应该转到 UserController::view($id) 而不需要你指示 Yii 建立这个连接。
    【解决方案2】:

    试试这个......

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

    【讨论】:

    • 是否可以像用户传递 id 那样进行操作,如果不是,也可以进行相同操作?
    【解决方案3】:

    除了@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;
        }
    

    【讨论】:

      猜你喜欢
      • 2018-01-26
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-09
      • 2016-12-22
      • 2012-05-13
      相关资源
      最近更新 更多