0

コメントのコンテンツ入力フィールドである要素を呼び出すポスト インデックス ビューがあります。

このように呼びます

<?php echo $this->element('addcomment', array('post_id' => $post['Post']['id'])); ?>

post_id 入力フィールドが addcomment に隠されているため、addcomment 要素に post id パラメータを渡します。もちろん、ユーザーが投稿IDを入力することは望ましくありません。

識別された (接続された) ユーザーにコメントを追加できるようにするために、認証メカニズムをセットアップしました。

接続していないユーザーがコメントを追加しようとすると、ログイン画面が表示されます。

ログイン後、コメント追加フォームにリダイレクトされます。問題は、その間に post_id 変数の値が失われることです。

Rem: 投稿にコメントを追加する前にユーザーが接続されていれば、機能します。

私の説明が明確でない場合や、さらに情報が必要な場合は、遠慮なくご連絡ください。

これは私の addcomment 要素です

<div class="Addcomment form">
<?php 
echo $this->Form->create('Comment', array(
    'url' => array('controller' => 'comments', 'action' => 'add')
)); ?>

    <fieldset>
        <legend><?php echo __('Add Comment'); ?></legend>


    <?php if (isset($current_user['id']) && isset($post_id)): ?>

            <?php   $this->request->data['Comment']['user_id'] = $current_user['id']; ?>
            <?php   $this->request->data['Comment']['post_id'] = $post_id; ?>
            <?php   echo $this->Form->input('post_id', array('type' => 'hidden')); ?>
            <?php   echo $this->Form->input('user_id', array('type' => 'hidden'));   ?>
    <?php else: echo $this->Form->input('post_id');  ?>
    <?php endif; ?>

    <?php   echo $this->Form->input('content', array('class' => 'comment'));   ?>


    </fieldset>
<?php echo $this->Form->end(__('Submit')); ?>
</div>
4

1 に答える 1

0

私はあなたの問題を理解しています。セッション変数を使用して、ユーザーがログインしても影響を受けない投稿 ID を保存できます。また、このセッションを使用すると、ログイン後にユーザーを特定の投稿にリダイレクトできます。

  1. ユーザーをログインにリダイレクトする前に、セッション値を設定します。

    $this->Session->write('last_post_id',YOUR_POST_ID);

  2. ユーザーが正常にログインし、セッション値が空でない場合は、ユーザーを投稿にリダイレクトします。

    if ($this->Session->check('last_post_id') && $this->Session->read('last_post_id') != '') { $this->redirect(YOUR_URL_TO_POST . '?postid=' . $ this->Session->read('last_post_id')); 出口; }else{ //通常のリダイレクト }

これがあなたを助けることを願っています。リダイレクト後、不要になった場合は、セッション last_post_id の設定を解除します。

于 2013-08-03T10:23:11.793 に答える