2015-12-28 20 views
9

Đây là biểu mẫu của tôi trong trang xem của trang web của tôi.Chuyển hướng từ một chế độ xem sang chế độ xem khác - 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> 

Như đã trình bày ở trên trong phần khác, tôi muốn chuyển hướng đến tasks/index url này. Chỉ cho tôi cách tôi có thể thực hiện việc này trong Chỉ xem.

+1

'trả về Yii :: $ app-> response-> chuyển hướng (Url :: đến (['đường dẫn', 'id' => id]));' [Chuyển hướng()] (http: // www. yiiframework.com/doc-2.0/yii-web-response.html#redirect%28%29-detail) –

+0

@InsaneSkull Điều đó đã hiệu quả. Nhưng cần sử dụng 'yii \ helpers \ Url;' Cảm ơn bạn đã trả lời .. :) – Choxx

Trả lời

9

Sử dụng Url::to() và đừng quên thêm yii\helpers\Url vào Tiêu đề.

Ví dụ,

return Yii::$app->response->redirect(Url::to(['path', 'id' => id])); 

Redirect()

+0

Và việc thêm id vào URL là tùy chọn. – Choxx

+0

bạn nói đúng. @choxx –

6

chuyển hướng được thực hiện trong các bộ điều khiển hoặc một số thành phần liên quan, nhưng không phải trong quan điểm, vì vẽ không có ý nghĩa trong trường hợp này.

Trong điều khiển, bạn có thể sử dụng hình thức ngắn hơn:

$this->redirect(['view', 'id' => $id]); 

Lưu ý rằng bạn không cần phải sử dụng Url::to() helper để xây dựng url vì nó đã được áp dụng trong nội bộ.

Bạn cũng có thể sử dụng:

Yii::$app->controller->redirect, nếu điều khiển là không rõ, phương pháp này gọi Yii::$app->response->redirect như Insane Skull đề cập trong câu trả lời của mình.

Hãy xem mã bộ điều khiển do GII tạo để xem cách chuyển hướng được sử dụng sau khi lưu/xóa.

+1

Cảm ơn @arogachev. Để biết thêm thông tin về điều này. 1 cho điều đó. –

+0

@arogachev Đó là 100% chính xác mà chuyển hướng được thực hiện trong bộ điều khiển để theo kiến ​​trúc MVC hoàn chỉnh. Nhưng, trong trường hợp của tôi, tôi cần phải làm điều đó theo quan điểm của tôi theo yêu cầu của tôi. Tôi đã thử làm điều đó trong bộ điều khiển nhưng có một số vấn đề phức tạp. Đó là lý do tại sao tôi đi lên với quan điểm. Tôi hiểu kịch bản của bạn một cách chính xác và cảm ơn câu trả lời hay và gợi ý này. 1 cho điều đó. :) – Choxx

+0

@choxx Nếu bạn cung cấp thêm chi tiết, có thể chúng tôi có thể tư vấn cách thực hiện đúng cách. Nên có một cách để làm điều đó, có thể thông qua thành phần phụ hoặc sự kiện, nhưng không phải trong tầm nhìn. Rất vui được giúp đỡ. – arogachev

Các vấn đề liên quan