Page Contents

Url

class Cake\View\Helper\UrlHelper(View $view, array $config = [])

UrlHelper は他のヘルパーから URL を生成することが容易になります。 アプリケーションのヘルパーでコアヘルパーをオーバーライドすることによって URL の生成方法を カスタマイズする単一の場所を提供します。このやり方は ヘルパーの別名 セクションをご覧ください。

URL の生成

Cake\View\Helper\UrlHelper::build(mixed $url = null, boolean|array $full = false)

コントローラーとアクションの組み合わせを指定することで URL を生成して返します。 $url が空の場合、 REQUEST_URI を返します。そうでない場合、 コントローラーとアクションの組み合わせで URL を生成します。 fulltrue の場合、結果がフルベース 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 を確認してください。