Yii 以正确的方式在控制器中获取ID?

Yii 以正确的方式在控制器中获取ID?,yii,Yii,我有一个控制器,名为: CarController 其中有一个函数名为: public function actionView 这意味着我可以很容易地调用: www.mysite.com/Car/View 但我想打电话: www.mysite.com/Car/View/1 其中1是数据库中汽车的ID。如果我这样调用它并打印$\u请求对象,我会看到: Array ( [1] => ) 使用YII的内置功能获得1的正确方法是什么。我可以通过请求数组中的密钥来破解它,但这似乎不

我有一个控制器,名为:

CarController
其中有一个函数名为:

public function actionView
这意味着我可以很容易地调用:

www.mysite.com/Car/View
但我想打电话:

www.mysite.com/Car/View/1
其中1是数据库中汽车的ID。如果我这样调用它并打印$\u请求对象,我会看到:

Array ( 
  [1] => 
)

使用YII的内置功能获得1的正确方法是什么。我可以通过请求数组中的密钥来破解它,但这似乎不是正确的方法?

您可以使用几种方法之一,但都需要您正确设置路由

首先,如果您正确配置了路由,它们将被参数化,并且如果在URL中传递id,您可以执行一些很酷的操作,例如路由到特定操作:

从config/main.php:

'<controller:\w+>/<id:\d+>'=>'<controller>/view',
在动作功能中,您可以执行以下操作:

public function actionCoolAction($myParam){
    echo $myParam;
}
您可以将$myParam重命名为任何您喜欢的名称,但参数是按顺序传递的,因此如果您有多个参数:

 '<controller:\w+>/coolAction/<myParam:\w+>/<secondParam:\w+>'=>'<controller>/coolAction',
传递给操作的第一个参数是myParam,第二个参数是secondParam

如果查看Gii生成的操作,您会发现查看、更新和删除操作都使用$id参数,并且在路由中以这种方式配置

因为它在URL中,所以参数也是$\u GET变量,可以通过这种方式检索$\u GET['id']或$\u GET['myParam']

如果你想成为一名技术人员,你可以使用Yii的Yii::app->request->id或Yii::app->request->myParam来做同样的事情

谨慎

如果将路由配置为接受id等参数,但id不存在,则它将抛出错误。这就是为什么使用$\u GET或Yii::app->request->会更好


查看有关路由的帮助。

您可以使用几种方法之一,但都需要正确设置路由

首先,如果您正确配置了路由,它们将被参数化,并且如果在URL中传递id,您可以执行一些很酷的操作,例如路由到特定操作:

从config/main.php:

'<controller:\w+>/<id:\d+>'=>'<controller>/view',
在动作功能中,您可以执行以下操作:

public function actionCoolAction($myParam){
    echo $myParam;
}
您可以将$myParam重命名为任何您喜欢的名称,但参数是按顺序传递的,因此如果您有多个参数:

 '<controller:\w+>/coolAction/<myParam:\w+>/<secondParam:\w+>'=>'<controller>/coolAction',
传递给操作的第一个参数是myParam,第二个参数是secondParam

如果查看Gii生成的操作,您会发现查看、更新和删除操作都使用$id参数,并且在路由中以这种方式配置

因为它在URL中,所以参数也是$\u GET变量,可以通过这种方式检索$\u GET['id']或$\u GET['myParam']

如果你想成为一名技术人员,你可以使用Yii的Yii::app->request->id或Yii::app->request->myParam来做同样的事情

谨慎

如果将路由配置为接受id等参数,但id不存在,则它将抛出错误。这就是为什么使用$\u GET或Yii::app->request->会更好


查看路由帮助。

www.mysite.com/Car/View/1是标准规则中www.mysite.com/Car/1的别名ww.mysite.com/Car/View/1是标准规则中www.mysite.com/Car/1的别名