我有一个action_register
函数,它试图注册一个新用户。如果成功,我希望将用户转发到登录表单(通过action_login
显示)。不过,我还想向登录视图发送$message
和$message_type
,其中显示“您的帐户已创建,请登录”。
最好的方法是什么?最好的意思是可维护,清洁和安全。
我的想法到目前为止:
action_login
的网址并重定向。action_login
渲染。答案 0 :(得分:5)
你实际上并不需要做任何代码片段来设置会话消息,Fuel php提供了一个非常好的界面来处理这样的功能。它的核心会话类是我们需要按照文档使用的方式。
在你的情况下,假设你需要从register_action重定向到login_action,并且在注册过程成功后,只需设置如下的flash消息
Session::set_flash('success', 'Your account has been successfully created !');
稍后在登录的视图文件中,您可以使用以下代码来获取所需的Flash消息。有些像这样的
<?php if (Session::get_flash('success')): ?>
<div class="alert-box info">
<?php echo Session::get_flash('success') ; ?>
</div>
<?php endif; ?>
此外,您可以删除会话消息,说“成功”&#39;在上面的例子中,只使用下面的delete_flash方法
Session::delete_flash('success');
要了解有关会话课程的更多信息,您可以从以下链接中学习
FuelPhp Session Class docuementation
另外,为了重定向用户,你不需要编写任何新的PHP代码,Fuel php也提供了一个很好的界面,它的响应&#39;具有为您定义的方法的类
以下是您需要在任何控制器操作中重定向用户的方法
Response::redirect('yourRouteName');
利用框架中定义的类总是一种很好的做法,这些类实际上是为了让开发人员生活更轻松而定义的。
在您的编程方法中面向对象,特别是当使用高质量的OOP MVC框架(如fuelPhp)时,通过为您提供对现成DRY的访问权限,可以防止您重新发明轮子(Getters and setters)。
希望这有帮助
答案 1 :(得分:1)
这种情况下的消息只显示一次(注册后),但我相信将来你的项目会有很多这样的消息。
你应该制作代码片段来做那件事和可重用性 - 在执行某些操作后,您需要将消息存储到会话变量中,然后重定向到其他操作 例如:
$_SESSION['msg'] = 'Your account has been created, please log in';
在屏幕目标上,检查是否已设置该会话变量,然后打印存储在会话var上的消息并清除它。
<?php
if(isset($_SESSION['msg']){
?>
<script>
//call some javascript function to display popup for example
var msg = '<?php echo $_SESSION['msg']; ?>';
display_popup_message(msg);
function display_popup_message(msg){
alert(msg);
}
</script>
<?php
unset($_SESSION['msg']);
}
?>