This document is for CakePHP's development version, which can be significantly different
from previous releases.
You may want to read
current stable release documentation instead.
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', ['fullBase' => 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',
// ]
// );
echo $this->Url->build(['_name' => 'product-page', 'slug' => 'i-m-slug']);
// Will result in:
/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',
]);
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]);
詳細は API の Router::url を確認してください。