0

我有一个帖子索引视图调用一个元素,其中内容输入字段用于评论。

我这样称呼它

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

这个工作正常,我在 addcomment 元素中传递了 post id 参数,因为 post_id 输入字段隐藏在 addcomment 中。当然,我不希望用户输入帖子 ID。

我已经设置了授权机制,以便允许向已识别(已连接)的用户添加评论。

当未连接的用户尝试添加评论时,他会收到登录屏幕。

登录后,他被重定向到添加评论表单。问题是它同时丢失了 post_id 变量的值。

Rem:如果用户在向帖子添加评论之前已连接,则它可以工作。

如果我的解释不清楚或您需要更多信息,请随时与我联系。

这是我的添加评论元素

<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 回答