Yii 框架:Controller/Action url & 参数
Posted
技术标签:
【中文标题】Yii 框架:Controller/Action url & 参数【英文标题】:Yii framework: Controller/Action url & parameters 【发布时间】:2011-02-15 04:40:40 【问题描述】:在我的应用程序中,我有ApiController
和actionUsers
,所以在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 & 参数的主要内容,如果未能解决你的问题,请参考以下文章