UrlHelper は他のヘルパーから URL を生成することが容易になります。 アプリケーションのヘルパーでコアヘルパーをオーバーライドすることによって URL の生成方法を カスタマイズする単一の場所を提供します。このやり方は ヘルパーの別名 セクションをご覧ください。
コントローラーとアクションの組み合わせを指定することで URL を生成して返します。
$url
が空の場合、 REQUEST_URI
を返します。そうでない場合、
コントローラーとアクションの組み合わせで URL を生成します。
full
が true
の場合、結果がフルベース URL で返されます。
echo $this->Url->build([
"controller" => "Posts",
"action" => "view",
"bar",
]);
// 出力結果
/posts/view/bar
さらにいつかの使用例は、こちら:
拡張子つきの URL:
echo $this->Url->build([
"controller" => "Posts",
"action" => "list",
"_ext" => "rss",
]);
// 出力結果
/posts/list.rss
フルベース URL を前につけた ('/' から始まる) URL:
echo $this->Url->build('/posts', true);
// 出力結果
http://somedomain.com/posts
GET パラメーターとフラグメントアンカーの URL:
echo $this->Url->build([
"controller" => "Posts",
"action" => "search",
"?" => ["foo" => "bar"],
"#" => "first",
]);
// 出力結果
/posts/search?foo=bar#first
上記の例で使用している ?
キーは、あなたが使用しているクエリー文字列パラメーターを
明示したい場合やクエリー文字列パラメーターをあなたのルートプレースホルダーの一つと名前を
共有したい場合に便利です。
名前付きルートの URL:
echo $this->Url->build(['_name' => 'product-page', 'slug' => 'i-m-slug']);
// 以下のようにルートをセットアップすることを仮定:
// $router->connect(
// '/products/:slug',
// [
// 'controller' => 'Products',
// 'action' => 'view',
// ],
// [
// '_name' => 'product-page',
// ]
// );
/products/i-m-slug
第2パラメーターは、HTML エスケープやベースパスを追加するかどうかを制御するオプションを 定義できます。
$this->Url->build('/posts', [
'escape' => false,
'fullBase' => true,
]);
以下は、アセットタイムスタンプ付きの URL が <link rel="preload"/>
で囲まれており、
フォントをプリロードしています。注意: ファイルは存在していなければならず、
Configure::read('Asset.timestamp')
は、タイムスタンプを追加するために
true
または 'force'
を返さなければなりません。
echo $this->Html->meta([
'rel' => 'preload',
'href' => $this->Url->assetUrl(
'/assets/fonts/yout-font-pack/your-font-name.woff2'
),
'as' => 'font',
]);
バージョン 3.3.5 で追加: build()
は、3.3.5 より第2引数として配列を受け取ります。
バージョン 3.6.0 で追加: timestamp
オプションが build()
に追加されました。
CSS や JavaScript、または画像ファイルの URL を生成する場合、 これらのアセットタイプのためのヘルパーメソッドがあります。
// 出力結果 /img/icon.png
$this->Url->image('icon.png');
// 出力結果 /js/app.js
$this->Url->script('app.js');
// 出力結果 /css/app.css
$this->Url->css('app.css');
// メソッドの呼び出し時にタイムスタンプを強制
$this->Url->css('app.css', ['timestamp' => 'force']);
// または、メソッド呼び出し時にタイムスタンプを無効化
$this->Url->css('app.css', ['timestamp' => false]);
バージョン 3.2.4 で追加: アセットヘルパーメソッドは 3.2.4 で追加されました。
バージョン 3.6.0 で追加: timestamp
オプションが、アセットのヘルパーメソッドに追加されました。
詳細は API の Router::url を確認してください。