使用数据重定向到另一个控制器

时间:2013-04-10 15:01:30

标签: php fuelphp

我有一个action_register函数,它试图注册一个新用户。如果成功,我希望将用户转发到登录表单(通过action_login显示)。不过,我还想向登录视图发送$message$message_type,其中显示“您的帐户已创建,请登录”。

最好的方法是什么?最好的意思是可维护,清洁和安全。

我的想法到目前为止:

  • 将数据发布到路由到action_login的网址并重定向。
  • 找到一种方法将数据直接发送到控制器方法,并一如既往地进行action_login渲染。

2 个答案:

答案 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']);
            }
            ?>