Yii 框架:Controller/Action url & 参数

Posted

技术标签:

【中文标题】Yii 框架:Controller/Action url & 参数【英文标题】:Yii framework: Controller/Action url & parameters 【发布时间】: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

谢谢!

【问题讨论】:

【参考方案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;
    

【讨论】:

以上是关于Yii 框架:Controller/Action url & 参数的主要内容,如果未能解决你的问题,请参考以下文章

Yii2-自适应切换模板

yii create url

Yii 1.1 CLinkPager 生成不完整的url

框架原理之加载控制器

yii框架如何访问api

Yii系列Yii2.0基础框架