8

SlimFrameworkは初めてです。Codeigniter関数のようにベースURLを取得するにはどうすればよいbase_url()ですか?

ありがとう

4

7 に答える 7

18

次のように取得する前に、最初にベースURLを手動で設定する必要があります。

$app->hook('slim.before', function () use ($app) {
    $app->view()->appendData(array('baseUrl' => '/base/url/here'));
});

http://help.slimframework.com/discussions/questions/49-how-to-deal-with-base-path-and-different-routes

于 2012-07-14T05:37:05.363 に答える
13

Slim v3では、PSR7を実装しているため、PSR7 Uriオブジェクトを取得し、Slim3が追加するgetBasePath()メソッドを呼び出すことができます。単に書く:

$basePath = $request->getUri()->getBasePath();

Slim v3のドキュメントから:

ベースパス

Slimアプリケーションのフロントコントローラーがドキュメントルートディレクトリの下の物理サブディレクトリにある場合は、UriオブジェクトのgetBasePath()メソッドを使用してHTTPリクエストの物理ベースパス(ドキュメントルートを基準とする)をフェッチできます。Slimアプリケーションがドキュメントルートの最上位ディレクトリにインストールされている場合、これは空の文字列になります。

getBasePath()メソッドはフレームワークによって追加され、PSR7UriInterfaceの一部ではないことに注意してください。

于 2016-01-21T10:05:35.417 に答える
6

Twigを使用している最近のアプリでは、httpBasePathを次のように割り当てます。

$view = $app->view()->getEnvironment();
$view->addGlobal('httpBasePath', $app->request->getScriptName());

このaddGlobal()方法はおそらくと同等ですが$app->view()->appendData()、よくわかりません。

を使用する利点は$app->request->getScriptName()、フォルダ名を手動で設定したり、それが何であるかを気にする必要がないことです。1人の開発者がリポジトリを配置しhttp://example.localhost、別の開発者がリポジトリを配置できhttp://localhost/projects/slim、構成は必要ありません。

于 2014-01-24T19:04:48.403 に答える
4

index.phpでこれを試して、ビューのベースURLを設定します

$app->hook('slim.before', function () use ($app) {
    $posIndex = strpos( $_SERVER['PHP_SELF'], '/index.php');
    $baseUrl = substr( $_SERVER['PHP_SELF'], 0, $posIndex);
    $app->view()->appendData(array('baseUrl' => $baseUrl ));
});
于 2013-10-05T02:00:13.677 に答える
2

でベースURLを取得できます{{ app.request.getRootUri }}(Twigテンプレートエンジンを使用しています)。ちなみに、これは「SCRIPT_NAME」環境変数と同じです。

于 2015-03-25T09:51:46.553 に答える
1

TWIGを使用している場合は、Slimv3で呼び出します-

{{ base_url() }}

または使用する{{ path_for('yourRouteName') }}

于 2016-07-23T17:16:44.763 に答える
0

ベースURLを取得する最も簡単な方法は、次のようにリクエストURLとリクエストルートURLを追加することです。 $req = $app->request; $base_url = $req->getUrl()."".$req->getRootUri()."/";

于 2015-06-11T07:35:26.180 に答える