[Slim Framework]サブディレクトリにインストールした場合のリダイレクト方法

簡単なWebアプリを作る機会があったので、PHPのマイクロフレームワークの一つであるSlim Frameworkを触ってみた。

そこでサブディレクトリにインストールした場合のリダイレクト方法で少しハマったので共有しておく。

環境

Slim 2.4.0

getRootUriを利用する

Slim_Http_Request::getRootUriはサブディレクトリ名を返すのでそれを利用しリダイレクトを行う。

ex) サブディレクトリ名がslimの場合、「/slim」という文字列を返す。

1
2
3
$app->get('/index',  function () use ($app) {
    $app->redirect($app->request->getRootUri() . '/hoge' );
}

urlForを利用する

Slimはrouteに任意の名前を割り当てることができ、urlForでURLを生成することができる。

1
2
3
4
5
6
7
$app->get('/index',  function () use ($app) {
    $app->render('index.php');
})->name('index');

$app->get('/edit',  function () use ($app) {
    $app->redirect($app->urlFor('index'));
}

これでインストール先がドキュメントルートだろうが、サブディレクトリだろうがコードを変える必要はなくなる。

参考

Slim Framework Documentation

Comments