タイトル: aリンクの貼り方と動的URLの作成
SEOタイトル: 【Vue.js】aリンクの貼り方と動的URLの作成 <router-link>
| この記事の要点 |
|---|
基本的なリンクの書き方
① 静的なリンク
ユーザー一覧
外部サイト
② url() ヘルパー(推奨)
ユーザー一覧
ユーザー詳細
現在のURL
前のページ
# url() は config('app.url') を基準に絶対 URL を生成
③ asset() ヘルパー(静的ファイル)
名前付きルート(route ヘルパー、推奨)
URL を直書きするより、ルート名で参照するほうが URL 変更に強いです:
// routes/web.php
Route::get('/users/{id}', [UserController::class, 'show'])->name('user.show');
Route::get('/posts/{post}/comments', [CommentController::class, 'index'])->name('comment.index');
# Blade
{{ $user->name }}
# 名前付き引数
{{ $user->name }}
# クエリパラメータも含める
詳細
# → /users/1?tab=profile&lang=ja
# 複数のパスパラメータ
コメント
# → /posts/1/comments
動的にリンクを生成
foreach でリスト
@foreach ($users as $user)
-
{{ $user->name }}
@endforeach
条件付き
@if (auth()->check())
マイページ
ログアウト
@else
ログイン
@endif
アクティブリンクの判定
ホーム
ユーザー一覧
# URL ベースの判定
管理画面
外部リンクのセキュリティ
外部サイト
# rel="noopener": 新タブ先から window.opener にアクセスさせない(XSS 防止)
# rel="noreferrer": Referer ヘッダを送らない(プライバシー)
# rel="nofollow": 検索エンジンに辿らせない(SEO 用、ユーザ生成リンクで使う)
動的属性とクラス
# クラスを動的に
{{ $user->name }}
# Blade のクラスディレクティブ (Laravel 8.51+)
$user->is_active,
'btn-secondary' => !$user->is_active,
'disabled' => $user->is_locked
])>...
URL に関する Tips
action() でコントローラ指定
詳細
# → /users/1 (web.php の定義に従う)
signed URL(署名付き URL)
# 改ざん防止の URL(メール認証等で使う)
$url = URL::signedRoute('verify.email', ['user' => $user->id]);
$temporaryUrl = URL::temporarySignedRoute('download', now()->addMinutes(30), ['file' => $id]);
# Blade
メール確認
ローカライズされた URL(多言語)
// 言語プレフィックス付き
Route::prefix('{locale}')->where(['locale' => '(ja|en)'])->group(function () {
Route::get('/users/{id}', ...)->name('user.show');
});
# Blade
...
# → /ja/users/1
...
# → /en/users/1
JavaScript と連携
Blade で生成した URL を JavaScript に渡す:
# Blade
// JS 側で使う
const url = routes.userShow.replace(":id", userId);
fetch(url).then(...);
または Ziggy ライブラリを使うと、JS から名前付きルートを直接呼べます。
パンくず・ナビゲーション
# レイアウトで再利用