0

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>

そして、別のルートから 'file_path' 変数にアクセスしようとしましたが、$f3->get('file_path') は NULL を返しません:

$f3->route('GET /getfile',
function ($f3) {

    $file = $f3->get('file_path');

    var_dump($file);
}
);

さらに、$f3->get() を介してアクセスされる他のグローバル変数は正常に機能します。例えば

$f3->route('GET /getfile',
    function ($f3) {

    $db = $f3->get('DB');

    var_dump($db);
}
);

$db 変数を完全に取得します。ローカル変数名とグローバル変数名を変更しても役に立ちませんでした。何が起こっているかについてのアイデアはありますか?:S

4

1 に答える 1

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);
}
);
于 2014-07-06T09:45:10.410 に答える