2014-01-08 45 views
0

您好我已經開始開發使用Yii web應用程序。我已成功隱藏index.php。 但我有2個問題。URL重寫問題與誼與重定向

  1. 管理員控制器site.com/admin顯示admin的登錄頁面。 註銷後,我將重定向回索引(登錄頁面)。

    $this->redirect('index'); 
    

    儘管該網址現在site.com/admin/index,在這裏我想隱藏/index位。我試過this但這並不能解決問題。

  2. 在管理員登錄頁面我有以下的javascript代碼

    $("#superlogin").click(function() { 
        $.ajax({ 
         url: "index.php/admin/adminlogin", 
         data: $("#adminlogin").serialize(), 
         method: "post", 
         success: function (data) { 
          if (data !== "failure") { 
           window.location.href = "admin/admindashboard"; 
          } 
          else { 
           alert("Please check username and password"); 
          } 
         }, 
         failure: function() { 
         } 
        }); 
    }); 
    

此代碼工作正常時,網址爲site.com/admin但當網址是:

  1. site.com/admin/index - 它becaomes註銷後
  2. site.com/admin/ - 尾隨斜線

的JavaScript重定向會送我去

site.com/admin/index.php/admin/adminlogin在這兩種情況下,而不是site.com/index.php/admin/adminlogin

什麼是接近這一目標的最佳方式是什麼?

回答

1
  1. 有幾種方法可以做到這一點,但最簡單的一個可能改變你的重定向:

    $this->redirect('/admin'); 
    

    更妙的是,如果你傳遞你的路線,這將是。這樣,如果配置更改,則不必更改任何硬編碼鏈接。

    $this->redirect($this->createUrl("admin/index")); 
    

    ,然後執行該管理員/指標始終改寫爲admin,你可以在urlManager做到這一點(在config)

    'urlManager' => array(
        'showScriptName' => false, 
        'urlFormat' => 'path', 
        'rules' => array(
         'admin/index' => 'admin', 
         '<controller:\w+>/<id:\d+>' => '<controller>/view', 
         '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
         '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
        ), 
    ), 
    
  2. Yii中,最好的方法創建正確的URL總是回退到createUrl函數,即使在JavaScript中也是如此。

    //Yii.app.createUrl('controller/action'); 
    //relies on https://github.com/ainsej/Yii-JSUrlManager 
    $("#superlogin").click(function() { 
        $.ajax({ 
         url: '<?= Yii::app()->createUrl('admin/adminlogin); ?>', 
         data: $("#adminlogin").serialize(), 
         method: "post", 
         success: function (data) { 
          if (data !== "failure") { 
           window.location.href = '<?= Yii::app()->createUrl('admin/admindashboard); ?>'; 
          } 
          else { 
           alert("Please check username and password"); 
          } 
         }, 
         failure: function() { 
         } 
        }); 
    }); 
    
+0

對不起,我得到了'未定義的常量Yii的用途 - 假設「Yii''。首先我想directly.Then我把hiddent值使用你的代碼,並試圖通過PHP訪問createUrl'<?PHP的echo Yii.app.createUrl(「管理/後臺管理」)?>'但得到了同樣的error.Any幫助,讚賞。 – svk

+0

顯然你是混合了js和PHP的,我犯了一個錯誤,JS createUrl依賴於一種推廣:https://github.com/ainsej/Yii-JSUrlManager我會編輯我的答案 – DarkMukke