我有一个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>
答案 0 :(得分:0)
据我了解你的问题。您可以使用会话变量来存储在用户登录时不应受影响的帖子ID。使用此会话,您可以在登录后将用户重定向到特定帖子。
在将用户重定向到登录之前设置会话值。
$这 - &GT;会话而→写( 'last_post_id',YOUR_POST_ID);
如果用户成功登录并且您发现会话值不为空,则将用户重定向到帖子。
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')); 出口; }其他{ //正常重定向 }
希望这会对你有所帮助。重定向后取消设置会话last_post_id,如果不再需要。