我在Fat Free Framework中访问全局变量的问题。特别是,唯一的问题是获取' file_path'来自代码的变量:
$f3->route('GET /d/@id',
function ($f3) {
// Lots of DB code, where which in the end returns $file_id and $file_name
$file = "upload/";
$file .= $file_id . "/";
$file .= $file_name;
$f3->set('file_path', $file);
$f3->set('content','download.htm');
echo View::instance()->render('layout.htm')
}
);
然后我从download.htm调用/ getfile:
<a href="/getfile"> GET IT! </a>
然后我尝试访问&#39; file_path&#39;来自另一条路线的变量,但没有$ f3-&gt; get(&#39; file_path&#39;)返回NULL:
$f3->route('GET /getfile',
function ($f3) {
$file = $f3->get('file_path');
var_dump($file);
}
);
此外,通过$ f3-&gt; get()访问的其他全局变量工作正常。例如
$f3->route('GET /getfile',
function ($f3) {
$db = $f3->get('DB');
var_dump($db);
}
);
完美地获得$ db变量。更改本地和全局变量名称并没有帮助。关于发生了什么的任何想法? :S
答案 0 :(得分:1)
file_path
只有在您/d/@id
时才能访问。您必须缓存该变量或将其保存在SESSION中。您可以访问DB
,因为您将其设置在任何路线之外。
$f3->route('GET /d/@id',
function ($f3) {
// Lots of DB code, where which in the end returns $file_id and $file_name
$file = "upload/";
$file .= $file_id . "/";
$file .= $file_name;
$f3->set('SESSION.file_path', $file);
$f3->set('content','download.htm');
echo View::instance()->render('layout.htm')
}
);
$f3->route('GET /getfile',
function ($f3) {
$file = $f3->get('SESSION.file_path'); // you might clear the file_path then
var_dump($file);
}
);