私はログインしたユーザのためにビューを設定しようとしています。私はcakephp 2.0マニュアルのコードを解除しました。コントローラコード:Cakephpがurlを修正するためにルーティングされず、url paramを空にします。
public function view($id = null) {
$this->User->id = $id;
if (!$this->User->exists()) {
throw new NotFoundException(__('Invalid user'));
}
$this->set('user', $this->User->read(null, $id));
}
user_idが1のユーザがログインすると、cakeは/ users/1に移動しません。代わりに/ users/viewに移動します。
Router::connect('/users', array('controller' => 'users', 'action' => 'login'));
Router::connect('/users/:action', array('controller' => 'users'));
Router::connect('/users/:id', array('controller' => 'users', 'action' => 'view'));
私は間違っているか、ルートコードまたはコントローラコードが不明です。
UPDATE新しいコントローラ機能:成功したログインがいずれかのページが認証されていないユーザーが最初に開こうとしたか、アクションがであなたのAuthコンポーネントのloginRedirect
プロパティに設定された後
public function view($id = null) {
$this->User->id = $id;
if (!$this->User->exists()) :
throw new NotFoundException(__('Invalid user'));
elseif($this->Auth->login()) :
return $this->redirect(array('controller' => 'users', 'action' => 'view', AuthComponent::user('id')));
endif;
$this->set('user', $this->User->read(null, $id));
}
私はあなたが言っていることを見るので、例外をスローするコードを取り出して代わりに使用しました。それは/ users/view/18としてログインしていて、クロムは私にリダイレクトループエラーを与えました。私はリダイレクトコマンドをコントローラのアクションに戻すべきでしょうか? OPに新しい機能を追加します。 – huzzah
いいえ、あなたは私の答えを誤解しました。コードの一部は、あなたのビューアクションではなく、あなたのログインアクションに入れなければなりません。 – Oldskool
申し訳ありません。これで、ループエラーなしで正常にログインできますが、まだ/ users/view/18にルーティングされています。私はケーキに/ users/18に行く方法を理解していません。私はあなたの助けを本当にありがとう。私が実際に何かを書いているときのように、あなたは私にcakephpのマニュアルだけが私には不明瞭ないくつかのah-haを提供しました。 – huzzah