元雀荘メンバーのエンジニアブログ

仕事で学んだことや麻雀のこと等、気が向いた時に書いていく

Laravelでプレビュー画面

Laravelでプレビュー画面の作成方法

基本的には入力内容をshow用のviewに渡すだけ。

コーディング例

編集画面view

更新ボタンとプレビューボタンを準備。 プレビューは別タブに表示する。

<button name="action" value="preview" onclick="this.form.target='_blank'">プレビュー</button>
<button name="action" value="update" pnclick="this.form.target='_top'">更新</button>

controller

$request->actionpreviewの場合はプレビュー画面を表示 そうでなければ更新処理

$user = User::find($id);
if ($request->action === 'preview') {
    return view('show', [
        'user' => $user->fill($request->all()),
        'previewPosts' => Post::whereIn('id', $request->post_ids)->get(),
        'previewPhoto' => $request->file('photo'),
    ]);
}
// 更新処理

show画面view

userはそのまま 子オブジェクト、画像は場合分け

{{ $user->name }}
@foreach($previewPosts ?? $user->posts as $post}}
  {{--  --}}
@endforeach
@if(isset($previewPhoto))
  <img src="data:{{ $previewPhoto->getMimeType() }}:base64,{{ file_get_contents($previewPhoto) }}">
@else
  {{-- 通常時の表示 --}}
@endif