登录后调用元素

时间:2013-07-31 17:28:01

标签: cakephp

我有一个post index视图,调用一个元素,用于注释的内容输入字段。

我以这种方式称呼它

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

这项工作正常,我在addcomment元素中传递post id参数,因为post_id输入字段隐藏在addcomment中。当然我不希望用户输入帖子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>

1 个答案:

答案 0 :(得分:0)

据我了解你的问题。您可以使用会话变量来存储在用户登录时不应受影响的帖子ID。使用此会话,您可以在登录后将用户重定向到特定帖子。

  1. 在将用户重定向到登录之前设置会话值。

    $这 - &GT;会话而→写( 'last_post_id',YOUR_POST_ID);

  2. 如果用户成功登录并且您发现会话值不为空,则将用户重定向到帖子。

    if($ this-&gt; Session-&gt; check('last_post_id')&amp;&amp; $ this-&gt; Session-&gt; read('last_post_id')!=''){ $ this-&gt; redirect(YOUR_URL_TO_POST。'?postid ='。$ this-&gt; Session-&gt; read('last_post_id')); 出口;             }其他{ //正常重定向 }

  3. 希望这会对你有所帮助。重定向后取消设置会话last_post_id,如果不再需要。