質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

1399閲覧

Laravelにて、Form::modelにenctype="multipart/form-data"をつける方法

mikeko0901

総合スコア227

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2020/02/12 14:33

前提・実現したいこと

Awsのcloun9にて、Laravelを用いて開発をしており、s3を用いて画像をアップロード機能を実装しています。(ユーザーが猫を登録する機能で、猫画像を登録できるようにしています)
登録はできるのですが、編集(update)にて、画像の編集の実装方法がわかりません。
教えていただけますと幸いです。

わからない点

登録(store)では、Controllerのstoreに渡すformタグを以下のように記載して、登録しております。

<form action="{{ action('CatsController@store') }}" method="post" enctype="multipart/form-data"> </form>

編集(update)では、Controllerのupdateに渡す際に、編集する猫idを引数として渡したいので、以下のようにしておりますが、その場合、どのように enctype="multipart/form-data" を指定したらよいのでしょうか。。。

{!! Form::model($cat, ['route' => ['cats.update', $cat->id], 'method' => 'put']) !!} {!! Form::close() !!}

もしくは、Form::modelを使わない場合、どのように記述すれば、<form action="{{ action('CatsController@update') }}" method="put" enctype="multipart/form-data">
で、$cat->idが渡せますでしょうか・・・

アドバイスいただけますと幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

なぜ編集するときだけformヘルパを使用しているのか謎ですが

<form action="{{route('cats.update',$cat) }}" method="post" enctype="multipart/form-data"> @csrf @method('PUT') </form>

みたいな感じでどうでしょうか

投稿2020/02/12 15:53

mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mikeko0901

2020/02/13 08:47

ありがとうござます! <form action="{{route('cats.update',$cat) }}" method="post" enctype="multipart/form-data"> にしてみましたが、更新ボタンを押すとNo Message というエラーが出てしまいました… <form action="{{route('cats.update',$cat->id) }}" method="post" enctype="multipart/form-data"> にしても、同じくNo Messageというエラーでした…
mikkame

2020/02/13 08:51

no Messageだけじゃわからないのでスクショ貼ってもらえますか?
mikeko0901

2020/02/13 13:22

説明不足で申し訳ございません。 ■CatsControllerのupdate function   public function update(Request $request, $id) { $cat = Cat::find($id); // s3アップロード開始 $image = $request->file('mainimage_path'); // バケットの`myprefix`フォルダへアップロード $path = Storage::disk('s3')->putFile('/myprefix', $image, 'public'); // アップロードした画像のフルパスを取得 $cat->mainimage_path = Storage::disk('s3')->url($path); // 画像パス以外を格納 $cat->name = $request->name; $cat->age = $request->age; $cat->gender = $request->gender; $cat->catch_copy = $request->catch_copy; $cat->feature = $request->feature; // configから取得 $status = config('temp.status'); $cat->status = $status[$request->status]; $cat->memo = $request->memo; $cat->user_id = $request->user_id; $cat->save(); return redirect()->action('CatsController@index'); } ■route:list +--------+-----------+------------------------+------------------+------------------------------------------------------------------------+-----------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+-----------+------------------------+------------------+------------------------------------------------------------------------+-----------------+ | | GET|HEAD | / | home | App\Http\Controllers\HomeController@index | web | | | GET|HEAD | admin | | Closure | web | | | POST | admin/cats | cats.store | App\Http\Controllers\CatsController@store | web,auth:admin | | | GET|HEAD | admin/cats | cats.index | App\Http\Controllers\CatsController@index | web,auth:admin | | | GET|HEAD | admin/cats/create | cats.create | App\Http\Controllers\CatsController@create | web,auth:admin | | | DELETE | admin/cats/{cat} | cats.destroy | App\Http\Controllers\CatsController@destroy | web,auth:admin | | | PUT|PATCH | admin/cats/{cat} | cats.update | App\Http\Controllers\CatsController@update | web,auth:admin | | | GET|HEAD | admin/cats/{cat} | cats.show | App\Http\Controllers\CatsController@show | web,auth:admin | | | GET|HEAD | admin/cats/{cat}/edit | cats.edit | App\Http\Controllers\CatsController@edit | web,auth:admin | | | GET|HEAD | admin/home | admin.home | App\Http\Controllers\Admin\HomeController@index | web,auth:admin | | | POST | admin/login | | App\Http\Controllers\Admin\LoginController@login | web,guest:admin | | | GET|HEAD | admin/login | admin.login | App\Http\Controllers\Admin\LoginController@showLoginForm | web,guest:admin | | | POST | admin/logout | admin.logout | App\Http\Controllers\Admin\LoginController@logout | web,auth:admin | | | GET|HEAD | admin/member | member.index | App\Http\Controllers\UsersController@index | web,auth:admin | | | GET|HEAD | admin/member/{id} | member.show | App\Http\Controllers\UsersController@show | web,auth:admin | | | GET|HEAD | api/user | | Closure | api,auth:api | | | GET|HEAD | cats/{id}/applied | cats.applied | App\Http\Controllers\CatsController@applied | web,auth:user | | | POST | cats/{id}/apply | user.apply | App\Http\Controllers\UserApplyController@store | web,auth:user | | | DELETE | cats/{id}/unapply | user.unapply | App\Http\Controllers\UserApplyController@destroy | web,auth:user | | | GET|HEAD | login | login | App\Http\Controllers\Auth\LoginController@showLoginForm | web,guest | | | POST | login | login.post | App\Http\Controllers\Auth\LoginController@login | web,guest | | | GET|HEAD | logout | logout.get | App\Http\Controllers\Auth\LoginController@logout | web | | | POST | logout | logout | App\Http\Controllers\Auth\LoginController@logout | web | | | POST | password/email | password.email | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail | web,guest | | | POST | password/reset | | App\Http\Controllers\Auth\ResetPasswordController@reset | web,guest | | | GET|HEAD | password/reset | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web,guest | | | GET|HEAD | password/reset/{token} | password.reset | App\Http\Controllers\Auth\ResetPasswordController@showResetForm | web,guest | | | POST | register | | App\Http\Controllers\Auth\RegisterController@register | web,guest | | | GET|HEAD | register | register | App\Http\Controllers\Auth\RegisterController@showRegistrationForm | web,guest | | | POST | signup | signup.post | App\Http\Controllers\Auth\RegisterController@register | web,guest | | | GET|HEAD | signup | signup.get | App\Http\Controllers\Auth\RegisterController@showRegistrationForm | web,guest | | | GET|HEAD | users/{id}/applyings | user.applyings | App\Http\Controllers\UsersController@applyings | web,auth:user | +--------+-----------+------------------------+------------------+------------------------------------------------------------------------+-----------------+ ①catedit.blade.phpのフォームタグを以下に変更 <form action="{{route('cats.update',$cat->id) }}" method="post" enctype="multipart/form-data"> もしくは以下に変更 <form action="{{route('cats.update',$cat) }}" method="post" enctype="multipart/form-data"> その際、出たエラー↓ https://gyazo.com/897e695d02956506e91ea31519612ed9 ②catedit.blade.phpのフォームタグを以下に変更 <form action="/admin/cats/{{ $cat->id }}" method="post" enctype="multipart/form-data"> その際、出たエラー↓ https://gyazo.com/98d537bef65b4db6fc65de7ba3ed72e8 こちらの記事を参考にしました・・ https://qiita.com/sayama0402/items/668f7148759910f65da9 ③catedit.blade.phpのフォームタグを以下に変更 <form action="{{ action('CatsController@update', $cat->id) }}" method="post" enctype="multipart/form-data"> ※createの時は、 <form action="{{ action('CatsController@store') }}" method="post" enctype="multipart/form-data">でできているので試してみました その時のエラー↓ https://gyazo.com/cec8e688a63986012ab1e6a832709fec お手数をおかけします・・・
mikeko0901

2020/02/13 13:33

ちなみに、 catedit.blade.phpのフォームタグを以下に変更 {!! Form::model($cat, ['route' => ['cats.update', $cat->id], 'method' => 'put']) !!} するとエラーは出ずに猫情報の編集はできるのですが、enctype="multipart/form-data"がないからか、画像が更新されないのです・・・
mikeko0901

2020/02/13 13:38

すみません。Form::modelを使った方法で、enctype="multipart/form-data"をセットするやり方で、とりあえず、画像の編集はできるようになりました
guest

0

<form action= ~ の記載ではエラーが出てしまったまだ解決はできておりませんが、画像の編集自体は、 {!! Form::model($cat, ['route' => ['cats.update', $cat->id], 'files' => true,'method' => 'put']) !!} というように、'files' => true, をセットすることで画像をアップロードできるようになりました。

投稿2020/02/13 13:40

mikeko0901

総合スコア227

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問