怎么实现,在不指定任何参数的情况下,切换到controller时,形成一定的路径!
例如,当用户在命令行输入http://user/index?id=
或http://user/index?
自动生成路径时http://user/index?id=mainpage&user=1
这是通过什么方式实现的?
行动
public function actionIndex()
{
$currentUser = null;
if (Yii::$app->user->isGuest || Yii::$app->request->isGet) {
if ($id = Yii::$app->request->get('id')) {
$currentUser = User::find()->where(['nick_name' => $id])->one();
}
}
if (!Yii::$app->user->isGuest ) {
if (Yii::$app->request->get('id') == Yii::$app->user->identity->nick_name || Yii::$app->request->get('id') == null ) {
$currentUser = User::find()->where(['nick_name' => Yii::$app->user->identity->nick_name])->one();
}
}
return $this->render('index', [
'currentUser' => $currentUser,
]);
}
如果您希望路径完全在浏览器行中形成,请使用重定向:
长话短说;博士;
如果您对默认参数感兴趣,那么您可以通过路由或直接在控制器中执行此操作。
通过路由的默认参数
在应用程序配置中:
控制器中的默认参数
我建议
$currentUser
您仍然需要按参数搜索$user
当然,我会推荐第二种选择,因为。有机会更灵活地配置默认参数。
我还想指出,您的代码中有很多......奇怪的地方:
user
不会以任何方式使用(除非你在路由中以某种方式处理它,这是不可能的)currentUser
id
由语义上意味着的参数搜索nick_name
id
,而授权用户只能进入他自己的页面id
,则显示view with$currentUser === null
(对于授权用户,如果$id
不为空且不等于nick_name
当前用户,将一直出现这种情况)$currentUser
通过 HTTP 方法进行搜索GET
,授权用户 - 通过任何 HTTP 方法在上面的例子中,其中一些奇怪的地方得到了纠正。