bladeで特定のURLの時だけ、HTMLの要素を表示したいです。
特定のURLとは、「http://127.0.0.1:8000/articles/10/edit」などのように、「記事のID/edit」という形式のURLです。
記事のIDは連想配列でコントローラーからビューに渡しています。
ちゃんとビューに連想配列の値が渡っていることを、ddで確認しました(ddの結果は下記に記載)。
URLも、「http://127.0.0.1:8000/articles/10/edit」と形式的に正しく表示されております。
しかし、ビューのヘルパ関数を使った、条件分岐(「@if( url()->current() === url("/articles/{{ $article->id }}/edit"))」)がうまく働いてないと思われます。
どのようにヘルパ関数の(条件分岐の)箇所を書けば、うまく動くでしょうか?
ビュー
<!-- 画像投稿 --> @if( url()->current() === url("/articles/{{ $article->id }}/edit")) <div class="file-field medium"> <div class="btn btn-outline-default waves-effect float-left"> <span><i class="fas fa-cloud-upload-alt ml-3" aria-hidden="true"></i></span> <!-- input fileに初期値で、以前登録したファイルのパスを表示させるのは不可能。 --> <input type="file" name="image_url" value="{{ $article->image_url ?? old('image_url') }}" multiple> </div> </div> <h4>現行のサムネイル:</h4> <img class="img-thumbnail" src="{{ Storage::url($article->image_url) }}" alt="thumbnail"> @endif
コントローラー
public function edit(Article $article) { $tagNames = $article->tags->map(function ($tag) { return ['text' => $tag->name]; }); $allTagNames = Tag::all()->map(function ($tag) { return ['text' => $tag->name]; }); // return view('articles.edit', ['article' => $article]); dd($article); return view('articles.edit', [ 'article' => $article, 'tagNames' => $tagNames, 'allTagNames' => $allTagNames, ]); }
ddの結果
App\Article {#1376 ▼ #fillable: array:2 [▶] #connection: "mysql" #table: "articles" #primaryKey: "id" #keyType: "int" +incrementing: true #with: [] #withCount: [] #perPage: 15 +exists: true +wasRecentlyCreated: false #attributes: array:7 [▼ "id" => 10 "title" => "こんにちは" "body" => """ こんにちは。 朝ですね。 ニワトリが鳴いています。 """ "user_id" => 1 ] ・・・略・・・ }
試したこと
- 色々ぐぐって、解決法を調べたが、有益な情報が得られず。下記のサイトもよく分かりませんでした。
http://cly7796.net/wp/php/try-the-path-and-the-url-of-the-helper-function-of-laravel/
- 下記のように、任意パラメータの部分を{id?}と書いてみたが、if文の中のHTMLが表示されませんでした。
@if( url()->current() === url("/articles/{id?}/edit"))
https://readouble.com/laravel/5.5/ja/routing.html
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/27 16:59
2020/11/27 17:02