2012-01-09 2 views
1

リバース:私がログに記録するには、上記の経路を制限したいので、私は今問題に出くわしましたCakePHPは私には、例えば、名前のパラメータとして「スラグ」とルーティングを使用してきたルーティングの問題

Router::connect('/category/:slug', array('controller'=>'categories', 'action'=>'view'), array('pass'=>array('slug'), 'slug'=>'[a-z0-9\-]+')); 

をユーザーだけで、私は私のCategoriesControllerののbeforeFilter()関数でこれを入れている:私は(しばらくはログアウト)/カテゴリ/私のカテゴリに行けば

if(!$this->Auth->loggedIn()) { 
    $this->Auth->deny('view'); 
} 

は今、私は私にリダイレクトされますアプリケーションのログインページ、残念ながらログイン後、/ categories/view/my-category/slugにリダイレクトされます:my-category

これは、我々が持っているAuthComponent.phpの317行目によるものです:

$this->Session->write('Auth.redirect', Router::reverse($request)); 

だから、私は上記の経路上のルータ::リバース($要求)を行うときに、それが正常に動作しないようです(なぜなら、「my-category」は、渡されたパラメータと名前付きのパラメータの両方であるべきだと思うからです)。

これは、私がこのルートを設定したやり方に問題があるのですか、それともCakePHPのバグですか?確かにRouter :: reverse($ request)は常に現在のURLを返すべきですか?

何かアドバイスは感謝...

答えて

1

は、私はそれがバグであるかどうか100%わからないんだけど、私たちが見つけるまでの作業を、周りに手動でカテゴリコントローラに新しいloginRedirectを設定することができそのよう:

if(!$this->Auth->loggedIn()) { 
    $this->Auth->deny('view'); 
    $this->Auth->loginRedirect = '/categories/' . $this->request->params['slug']; 
} 

注意、$this->request->params['slug']はない100%私の頭の上から、使用する権利VARであることを確認してください。

関連する問題