0

URLで構築したい一種の動的テンプレートエンジンを探しています。したがって、私の URL が localhost/root/this/is/the/path/to/signup.php のようなものである場合、php コードはディレクトリ this/is/the/path/to/ にあるファイル signup.php を監視する必要があります。

今回は、次のコードが示すように、URL の配列を使用しています。

$url = isset($_GET['url']) ? $_GET['url'] : null;
$url = rtrim($url, '/');
$url = explode('/', $url);

if (empty($url[0])) {
    $url[0] = "path/startpage.php";
}

if (isset($url[2])) {
    require "path/error.php";
} else if (isset($url[1])) {

    $file1 = 'path/' .$url[0].'/'.$url[1].'/'.$url[1].'.php';

    if (file_exists($file1)) {
        require $file1;
    } else {
        require "error.php";
    }

} else if (isset($url[0])) {

    $file0 = 'path/'.$url[0].'/'.$url[0].'.php';

    if (file_exists($file0)) {
        require $file0;
    } else {
    require "path/error.php";
    }
}

しかし、このスクリプトでは、すべてのケースでこれを行う必要があり、これはあまり良くありません。コードがURL全体を探し、ディレクトリに移動し、エラーまたはファイルが存在する場合はそれを要求するソリューションが必要です。

私を手伝ってくれますか?

4

1 に答える 1

0

Titon\View ライブラリはこれを非常に簡単に処理します: https://github.com/titon/View

テンプレートにパスの配列が渡されると、動的なルックアップ パスが生成されます。https://github.com/titon/View/blob/master/src/Titon/View/View.php#L127

例:

$view = new Titon\View\View();
$view->addPath('/path/to/views/');
$parsed = $view->run(['path', 'to', 'lookup/folder', 'templateName]);

テストを見て実際の動作を確認することもできます: https://github.com/titon/View/blob/master/tests/Titon/View/ViewTest.php

于 2013-07-31T20:10:19.510 に答える