2

我有一个action_register尝试注册新用户的功能。如果成功,我希望将用户转发到登录表单(通过 显示action_login)。但是,我还想向登录视图发送一个$message$message_type,上面写着“您的帐户已创建,请登录”之类的内容。

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

到目前为止我的想法:

  • 将数据发布到路由到action_login并重定向的 url。
  • 找到一种方法将数据直接发送到控制器方法并action_login像往常一样渲染。
4

2 回答 2

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; ?>

您也可以使用如下所示的 delete_flash 方法删除上述示例中的会话消息“成功”

Session::delete_flash('success');

要了解有关会话课程的更多信息,您可以从下面的链接中了解

FuelPhp 会话类文档

而且为了重定向用户,您不需要编写任何新的 PHP 代码,Fuel php 也为此提供了一个很好的接口,它的“响应”类具有为您定义的方法

这是您需要在任何控制器操作中重定向用户的方式

Response::redirect('yourRouteName');

利用框架中定义的类始终是一种很好的做法,这些类实际上是为了让开发人员的生活更轻松而定义的。

在您的编程方法中面向对象,尤其是在使用像fuelPhp 这样的优质OOP MVC 框架时,通过为您提供对现成的Getter 和setter的访问,可以防止您总是重新发明轮子( DRY ) 。

希望这可以帮助

于 2013-04-10T18:36:51.687 回答
1

这种情况下的消息只显示一次(注册后),但我相信将来你的项目会出现很多这样的消息。

您应该制作代码片段来执行该操作并实现可重用性 - 在您执行某些操作后,您需要将消息存储到会话变量中,然后重定向到其他操作 例如:

    $_SESSION['msg'] = 'Your account has been created, please log in';
  • 在屏幕目标上,检查是否设置了会话变量,然后打印存储在会话变量上的消息并清除它。

            <?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']);
            }
            ?>
    
于 2013-04-10T15:15:42.687 回答