ページが読み込まれるたびに表示される要素にデータを送信するための最良の方法を知りたいのですが。
たとえば、ユーザーがログインしたら、そのユーザーに関するいくつかの情報を復元する必要があります。User.id、User.nameなどは、次のようにSessionHelperを使用して回復されます。
<?php if( !$this->Session->check('Auth.User') ): ?>
<div class="taille_btn">
<a href="/users/register">
<div class="link_head">Inscription</div>
</a>
</div>
<div class="taille_btn">
<a href="/users/login">
<div class="link_head">Connexion</div>
</a>
</div>
<?php else: ?>
<div class="name_user">
<a href="/users/view/<?= $this->Session->read('Auth.User.id'); ?>">
<?= $this->Session->read('Auth.User.prenom'); ?>
</a>
</div>
<?php endif; ?>
しかし、ユーザーが受信したすべてのメッセージを回復するにはどうすればよいですか?より具体的には、どこでデータベースにクエリを実行する必要がありますか?AppControllerで?コンポーネント内?
助けてくれてありがとう :)
たとえば、ユーザーがログインしたら、そのユーザーに関するいくつかの情報を復元する必要があります。User.id、User.nameなどは、次のようにSessionHelperを使用して回復されます。
良い考えではありません。認証コンポーネントからビューにユーザーデータを設定するのが最善です。たとえば、ステートレス認証はセッションに存在しません。
AppControllers beforeRender()に、次を追加するだけです。
$this->set('userData', $this->Auth->user());
そして$userData
、必要に応じてビューにアクセスします。データの処理をもう少し便利にするAuthヘルパーを作成しました。Cake3の場合、これはこのプラグインの一部です。
しかし、ユーザーが受信したすべてのメッセージを回復するにはどうすればよいですか?より具体的には、どこでデータベースにクエリを実行する必要がありますか?AppControllerで?コンポーネント内?
すべてのページで必要な場合は、beforeRender()コールバックでも実行してください。
$this->loadModel('Message')
// Your logic goes into the model method
$messages = $this->Message->byUser($this->Auth->user('id'));
// Set it to the view:
$this->set('messages', $messages);
特定のページのデータのみを取得する場合は、Cake2のrequestAction()を使用します。Cake3では、タスク全体にビューセルを使用できます。
また、アプリケーションへのリンクに対してこれを行わないでください。
<a href="/users/register">
代わりに、HtmlHelpers link()メソッドを使用する必要があります。そうしないと、ルーティングは機能しません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加