在reroute()上移交“data / params”;在“无脂肪框架”

时间:2016-03-22 17:56:59

标签: php routing fat-free-framework

在使用$f3->reroute();

时,我正在寻找一种优雅的方式来移交数据/参数

我在routes.ini中配置了多条路线:

GET @sso: /sso/first [sync]  =   Controller\Ccp\Sso->first, 0
GET @map: /map       [sync]  =   Controller\MapController->second, 3600

现在我reroute();@map路由,来自first();

class Sso {
    public function first($f3){
        $msg = 'My message!';

        if( !empty($msg) ){
            $f3->reroute('@map');
        }
    } 
}

是否有任何“优雅”方式将数据(例如$msg)直接传递到$MapController->second();

我不想使用$SESSION或全局$f->set('msg', $msg);

2 个答案:

答案 0 :(得分:0)

这不是针对无脂肪框架的问题,而是一般的网络问题。重新路由时,告诉浏览器使用303头重定向代码重定向用户的浏览器页面。 花一点时间阅读有关重新路由的文档:http://fatfreeframework.com/routing-engine#rerouting

你的问题中似乎有一些矛盾的信息,这让我质疑你想要实现的目的。

如果要重新路由,可以使用会话,cookie或使用部分网址传递消息或对消息的引用。

如果您不需要重定向,但只想在不更改传递参数的情况下调用函数,则可以抽象函数的内容并从两个路径调用该函数。您还可以使用$ f3全局变量,这是在不希望使用函数调用传递数据的情况下在函数之间传递数据的好方法。你有没有想要使用它的原因?数据对于单个会话是全局的,因此没有安全问题,并且数据在请求结束时被擦除,因此在服务器上几乎没有额外的占用空间或影响。

答案 1 :(得分:0)

如果你没有在重新路由中使用@map_name,你可以这样做:

 > max([(reduce(mul, X[i:j], 1), i,j) 
         for i in range(X.size) for j in range(i,X.size)])
 (2140585984, 32, 66)

我承认,这不是最漂亮的。我希望$f3->reroute('path/?foo=bar'); 能够奏效。

相关问题