2014-01-27 47 views
1

我目前使用cake的路由配置爲了設置管理視圖,不同於非管理員用戶。我閱讀了文檔的路由章節(cake的),並偶然發現了前綴路由。我認爲這是我需要用來完成我所需要的東西。所以我建立的config/core.php中的建議開始的,這注釋掉CakePHP - 使用'admin_'路由前綴

Configure::write('Routing.prefixes', array('admin')); 

然後,我在routes.php文件中添加的路由:

Router::connect('/admin', array('controller' => 'donors', 'action' => 'index', 'admin' => true)); 

從我的理解,通過以上設置,我可以爲管理員定義特定的操作,名稱如:admin_index或admin_view等。

所以我AppController中有這樣設置的組件:

public $components = array(
     'DebugKit.Toolbar', 
     'Session', 
     'Auth' => array(
      'loginRedirect' => array( 
       'controller' => 'donors', 
       'action' => 'index' 
      ), 
      'authError' => 'Access Denied', 
      'logoutRedirect' => array( 
       'controller' => 'users', 
       'action' => 'login' 
      ), 
      'authorize' => array('Controller') 
     ) 
    ); 

所以當他一個非管理員用戶登錄應該被重定向到「捐助者/指數」,當在我的管理日誌要將他重定向到'donors/admin_index'..我該怎麼做?

我嘗試這樣做:

public function beforeFilter(){   

     if(isset($this->params['admin'])){ 
      $this->layout = 'stafflayout'; 
      $this->Auth->loginRedirect = array(
       'controller'=>'donors', 
       'action'=>'index', 
       'prefix'=>'admin', 
       'admin'=>true 
      ); 
    } 

,並在測試出來,乍一看我還以爲它的工作過程。但URL不會像'donor/admin_index ..'那樣改變,並且仍然被重定向到捐助者/索引或等價物,簡單地給/ donors ...爲什麼這不起作用?

(seconndary問題)亦測試了這一點的過程中,我改變在控制器和驗證部件LoginRedirect的行動

「控制器」 =>「帖」

'動作'=> '索引'

其他然後'捐助者','索引',當我登錄時,我仍然被重定向到捐助者/索引..是否應該重定向我'posts/index'

任何人都可以幫助我在這些兩個問題?主要問題雖然更重要!

+0

對不起,先生。你會(或者其他有經驗的用戶有足夠的幫助)與其他初學者分享那些優秀的文檔,像我一樣嗎?我提前謝謝你。 –

+1

你去那裏.. http://book.cakephp.org/3.0/en/development/routing.html#prefix-routing 要了解路由的蛋糕怎麼前綴的作品,經過您的回覆提供 – LogixMaster

回答

4

那麼代碼是好的!

Router::connect('/admin', array('controller' => 'donors', 
'action' => 'index', 'admin' => true)); 

只要/ url被寫入url中,上面就會渲染/ donors/index頁面。

現在,如果你想添加前綴像/供體/ admin_index,那麼你必須創建一個多個規則,如:

Router::connect('/donors/admin_index', array('controller' => 'donors', 
'action' => 'index', 'admin' => true)); 

,並在beforeFilter功能

if(isset($this->params['admin'])){ 
      $this->layout = 'stafflayout'; 
      $this->Auth->loginRedirect = array(
       'controller'=>'donors', 
       'action'=>'admin_index', 
       'admin'=>true 
      ); 

上面的代碼會重定向to/donors/admin_index and routing will render/donors/index page

+1

感謝文檔。然後,我必須無知地誤解(假定)將管理員cofig鍵設置爲true時,我告訴蛋糕期待admin_前綴!我的錯! – LogixMaster

+0

Iinjoy ...這是我學習的一部分......在這種情況下 – Anubhav

+0

好,我仍然被重定向到捐助者/索引時管理日誌!看來,這 - $> PARAMS [「管理」]沒有被設置莫名其妙,因爲不執行該塊..我重寫的AppController在UsersController的beforeFilter,但我呼籲家長:: beforeFilter,所以我認爲它應該執行!有關這個的任何想法? – LogixMaster