0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

laravelで画像を再度指定せずに編集可能な機能を作成

Posted at

初投稿です。これからプログラミング学習のアウトプット始めていこうと思います。

世の中のサイト(主にSNS)ってユーザーアカウントにアイコン(画像)が設定可能ですよね。
それを編集するときアイコン以外(名前、プロフィール等)だけ編集してアイコンはいじらない場合、アイコン画像はそのまま変更なしでプロフィールの変更ができます。
でも自分でlaravelでサイトを作ってみて気づいたのが画像に対してはoldヘルパーが適用されずどうやったらその機能を実現できるのかという点です。

今回自分なりに思いついた実装方法を紹介していきます。

#ルーティング

web.php
Route::get('/posts/edit/{post}', 'PostsController@edit');

暗黙の結合を使って編集ページにpostsテーブルからカラムを持っていきます
今回画像のカラム名はpathになります。

#if文を使って実装できた

PostsController@edit
 public function update(Request $request, Post $post) {
        // 画像変更の確認
        if(!empty($request->path)) {
            $file = $request->file('path');
            $filename = $file->getClientOriginalName();
            $request->file('path')->storeAs('public',$filename);
            $post->path = '/storage/' . $filename;
        }else {
            $post->path = $post->path;
        }

編集ページのsubmitボタンが押されたとき、$request->pathがあれば(新たに画像が挿入されているなら)新たに画像に対してユニークな名前をつけそれを投稿の画像としてデータベースに登録、そうでないならば(画像が変更されていないなら)以前の画像のパスを再代入してデータベースに登録

これで実装ができました!普段使い慣れているサービスの機能を実装できると気持ちがいいですね:relaxed:

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?