2016-05-15 39 views
0

我是yii2中的新成員。訪問NeededLogin操作後未重定向到登錄頁面

當使用url來調用一個動作時,它會正確地重定向到登錄頁面。在導航欄

['label' => Yii::t('app', 'Đat san'), 'url' => ['/datsan/create']], 

但是,當使用JavaScript從服務器獲取數據 例如,它不會自動重定向到登錄頁面。我如何解決它?

var vUrl = $("#datsan-url-create").data('url'); 
     $.get(vUrl, function(data){ 
       $('#modal-datsan').modal('show').find('.modalContent').html(data); // update data for modal 
} 

<input type="hidden" id="datsan-url-create" data-url='<?= Url::to(['/datsan/create']) ?>'> 

我檢查控制檯,它顯示如下錯誤

Forbidden (#403): Login Required 

/.DatsanController.php

public function behaviors() 
    { 
     return [ 
      'access' => [ 
       'class' => AccessControl::className(), 
       'only' => ['create', 'update', 'delete'], 
       'rules' => [ 
        [ 
         'actions' => ['create'], 
         'allow' => true, 
         'roles' => ['@'], 
        ], 
        [ 
         'actions' => ['update', 'delete'], 
         'allow' => true, 
         'roles' => ['@'], 
         'matchCallback' => function ($rule, $action) { 
          if (Yii::$app->user->identity->isAdmin || $this->isUserAuthor()) { 
           return true; 
          } 
          return false; 
         } 
        ], 
       ], 
      ], 
      'verbs' => [ 
       'class' => VerbFilter::className(), 
       'actions' => [ 
        'delete' => ['POST'], 
       ], 
      ], 
     ]; 
    } 

回答

0

那麼你正在做的AJAX請求它​​贏得如果你不這樣說,那麼你不會重定向。我相信你想要的東西,如:

$.get(vUrl, function(data, textStatus, jqXHR){ 
    if (jqXHR.status == 403) { 
     window.location = vUrl; // or whatever login url is 
    } else { 
     $('#modal-datsan').modal('show') 
      .find('.modalContent').html(data); // update data for modal 
    } 
} 
+0

謝謝波格丹。這是行不通的。同樣的錯誤。我嘗試添加警報(textStatus);緊接着$ .get(vUrl,function(data,textStatus,jqXHR){),但沒有任何警報顯示。 – Sam