通过重新路由函数传递 $f3->set 变量的问题

Issue passing $f3->set variables through reroute function

我正在使用 fat-free-framework 开发 Web 应用程序,并且我试图通过提供在操作发生时显示的有用消息来使该应用程序尽可能专业。

例如,在注册时,如果输入的两个密码不匹配,应用程序会将应用程序发送回注册路由,该路由显示表单以及可以在视图中显示的消息。

然而,当再次显示注册表单时,我在显示消息时遇到问题,我感觉它与导致该问题的重新路由功能有关。

/register 的 showRegister() 函数,方法类型为 GET:

public function showRegister($f3)
{
    $f3->clear('SESSION');

    $f3->set('title','Register');
    $f3->set('content','/pages/register.php');

    $f3->set('message',$f3->get('message'));
}

/register 的 Register() 函数,方法类型为 POST:

public function register($f3)
{
    $username = $_POST['username'];
    $password = $_POST['password'];
    $password2 = $_POST['password2'];

    if($password != $password2)
    {
        $f3->set('message','The passwords you entered do not match. Please try again.');
        $f3->reroute('/register');
    }
    else
    {
        echo "Awesome!";
    }
}

来自布局视图的行将回显保存在 $f3->set() 中的消息。

if(isset($message)) {echo $this->render(Base::instance()->get('message'));}

我已使用 showRegister() 函数中的最后一行尝试解决该问题,但没有任何效果。

如果有人有解决方案或变通办法那就太好了。

谢谢, 段.

有两种方法。您可以通过设置 set() 的第三个参数来缓存变量,或者使用我更喜欢的会话。

$f3->set('SESSION.message', 'foo bar');

然后可以通过 get() 或直接在模板中通过 {{@SESSION.message}}

访问