从一个视图重定向到另一个视图 - Yii2
Redirect from one view to another view - Yii2
这是我网站查看页面中的表单。
<?= $form->field($model, 'taskID')->textInput(['readonly' => true, 'value' => Yii::$app->getRequest()->getQueryParam('id')]) ?>
<?php
$ifDistributor = User::find()->select('userType')->where(['username'=>Yii::$app->user->identity->username])->andWhere(['userType'=>'Distributer'])->exists();
$ifDistributorHasOnSiteSupport = Distributorinfo::find()->select('hasOnSiteSupport')->where(['UName'=>Yii::$app->user->identity->username])->andWhere(['hasOnSiteSupport'=>1])->exists();
if($ifDistributor)
if($ifDistributorHasOnSiteSupport)
echo $form->field($model, 'assignedToID')->dropDownList(
ArrayHelper::map(dektrium\user\models\User::find()
->select('username')
->where(['userType'=>'CCE-Distributer'])
->andWhere(['distributerID'=>Yii::$app->user->getId()])
->all(),'username','username'),['prompt'=>'Select Person']
);
else {
Yii::$app->session->setFlash('error',
"Invalid Page");
//I WANT TO REDIRECT TO index.php?r=tasks/index THIS URL
}
?>
<?= $form->field($model, 'remarks') ?>
<?= $form->field($model, 'scheduledTime')->widget(DateTimePicker::classname(), [
'options' => ['placeholder' => 'Enter event time ...'],
'pluginOptions' => [
'autoclose' => true
]
]) ?>
<div class="form-group">
<?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
</div>
如上else部分所示,我想重定向到tasks/index
这个url。
帮助我如何仅在此 View 中执行此操作。
使用Url::to()
并且不要忘记在Header中添加yii\helpers\Url
。
例如,
return Yii::$app->response->redirect(Url::to(['path', 'id' => id]));
重定向是在控制器或一些相关组件中完成的,而不是在视图中完成的,因为在这种情况下渲染没有意义。
在控制器中,您可以使用更短的形式:
$this->redirect(['view', 'id' => $id]);
请注意,您不必使用 Url::to()
帮助程序来构建 url,因为它已在内部应用。
您还可以使用:
Yii::$app->controller->redirect
,如果控制器未知,此方法调用 Yii::$app->response->redirect
作为 Insane Skull 在他的回答中提到。
看看GII生成的controller代码,看看保存/删除后redirect是如何使用的
这是我网站查看页面中的表单。
<?= $form->field($model, 'taskID')->textInput(['readonly' => true, 'value' => Yii::$app->getRequest()->getQueryParam('id')]) ?>
<?php
$ifDistributor = User::find()->select('userType')->where(['username'=>Yii::$app->user->identity->username])->andWhere(['userType'=>'Distributer'])->exists();
$ifDistributorHasOnSiteSupport = Distributorinfo::find()->select('hasOnSiteSupport')->where(['UName'=>Yii::$app->user->identity->username])->andWhere(['hasOnSiteSupport'=>1])->exists();
if($ifDistributor)
if($ifDistributorHasOnSiteSupport)
echo $form->field($model, 'assignedToID')->dropDownList(
ArrayHelper::map(dektrium\user\models\User::find()
->select('username')
->where(['userType'=>'CCE-Distributer'])
->andWhere(['distributerID'=>Yii::$app->user->getId()])
->all(),'username','username'),['prompt'=>'Select Person']
);
else {
Yii::$app->session->setFlash('error',
"Invalid Page");
//I WANT TO REDIRECT TO index.php?r=tasks/index THIS URL
}
?>
<?= $form->field($model, 'remarks') ?>
<?= $form->field($model, 'scheduledTime')->widget(DateTimePicker::classname(), [
'options' => ['placeholder' => 'Enter event time ...'],
'pluginOptions' => [
'autoclose' => true
]
]) ?>
<div class="form-group">
<?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
</div>
如上else部分所示,我想重定向到tasks/index
这个url。
帮助我如何仅在此 View 中执行此操作。
使用Url::to()
并且不要忘记在Header中添加yii\helpers\Url
。
例如,
return Yii::$app->response->redirect(Url::to(['path', 'id' => id]));
重定向是在控制器或一些相关组件中完成的,而不是在视图中完成的,因为在这种情况下渲染没有意义。
在控制器中,您可以使用更短的形式:
$this->redirect(['view', 'id' => $id]);
请注意,您不必使用 Url::to()
帮助程序来构建 url,因为它已在内部应用。
您还可以使用:
Yii::$app->controller->redirect
,如果控制器未知,此方法调用 Yii::$app->response->redirect
作为 Insane Skull 在他的回答中提到。
看看GII生成的controller代码,看看保存/删除后redirect是如何使用的