您可以通过多种方式之一进行操作,但都需要您正确设置路由。
首先,如果你正确配置你的路由,它们就会被参数化,你可以做一些很酷的事情,比如如果id
在 URL 中传递了一个特定的动作,则路由到一个特定的操作:
从 config/main.php:
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
这会查找仅带有 id 的 URL 并将其直接传递给控制器中的视图操作,因此无需键入mysite.com/car/view/1
,您可以直接执行mysite.com/car/1
你也可以这样设置:
'<controller:\w+>/coolAction/<myParam:\w+>'=>'<controller>/coolAction',
在您的操作功能中,您可以这样做:
public function actionCoolAction($myParam){
echo $myParam;
}
您可以将 $myParam 重命名为您喜欢的任何名称,但参数是按顺序传递的,因此如果您有多个参数:
'<controller:\w+>/coolAction/<myParam:\w+>/<secondParam:\w+>'=>'<controller>/coolAction',
传递给您的操作的第一个参数是myParam
,第二个参数是secondParam
。
如果您查看 Gii 生成的操作,您会看到查看、更新和删除操作都有$id
正在使用的参数,并且在路由中是这样配置的。
因为它在 URL 中,所以参数也是$_GET
变量,也可以通过这种方式检索($_GET['id']
或$_GET['myParam']
)
如果你想要技术,你可以使用 Yii 的Yii::app()->request->id
或Yii::app()->request->myParam
which 会做同样的事情。
警告
如果配置路由接受 id 等参数,而 id 不存在,则会抛出错误。这就是为什么使用$_GET
或Yii::app()->request->
可以更好。
查看http://www.yiiframework.com/doc/guide/1.1/en/topics.url以获取有关路由的帮助。