前提・実現したいこと
PHPを利用して画像のアップロード→DBへ保存をしたい。
PHP(Laravel)でプロフィール機能を作っています。
名前等のテキストの保存と表示はできましたが、画像を選択し、アップロードすると下記のエラーが発生します。
発生している問題・エラーメッセージ
Method Illuminate\Validation\Validator::validateText does not exist
該当のソースコード
php
1<div class = "create_baby under_box">
2 <form action="/baby" method="post">
3 <div class="form-group">
4 <label for="name">おなまえ</label>
5 <input type="text" class="form-control" name="name">
6 </div>
7 <div class="form-group">
8 <label for="price">お誕生日</label>
9 <input type="text" class="form-control" name="birthday">
10 </div>
11 <div class="form-group">
12 <label for="price">写真</label>
13 <form method="post" action="{{ action('BabiesController@store') }}" enctype="multipart/form-data">
14 {{ csrf_field() }}
15 <fieldset>
16 <div>
17 <input id="file" type="file" name="image">
18 @if ($errors->has('image'))
19 {{ $errors->first('image') }}
20 @endif
21 </div>
22 </fieldset>
23 </div>
24 <button type="submit" class="btn btn-default">登録</button>
25 <a href="/baby">戻る</a>
26 </form>
27</div>
28
試したこと
画像アップロードに関する記事を複数読んだところ、事前に準備することは全く記述がありませんでした。
代わりに共通して下記のような記述がありました。
<?php
if (is_uploaded_file($_FILES['file']['tmp_name'])) {
if (!file_exists('upload')) {
<省略>
真似して記述をしてみると、
Undefined index: image
対象箇所
if (is_uploaded_file($_FILES['image']['tmp_name'])) {
そもそもview表示段階で新たなエラー出てしまい、先に進めません。
また、上記$_FILES['image']はDB上カラム名を'image'としていますが、弾かれます。
### 補足情報
```PHP
2019_11_20_084204_create_babies_table.php
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateBabiesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('babies', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name', 50);
$table->integer('birthday');
$table->string('image')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('babies', function (Blueprint $table) {
$table->dropColumn('image');
});
}
}
```
```PHP
BabiesController.php
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Http\Requests\BabyRequest;
use App\Baby;
class BabiesController extends Controller
{
public function index()
{
$babies = Baby::all();
return view('baby/index', compact('babies'));
}
public function store(BabyRequest $request)
{
$baby = new Baby();
$baby->name = $request->name;
$baby->birthday = $request->birthday;
$baby->image = $request->image;
$baby->save();
return redirect("/baby");
}
public function create()
{
$baby = new Baby();
return view('baby/create', compact('baby'));
}
public function edit($id)
{
$baby = Baby::findOrFail($id);
return view('baby/edit', compact('baby'));
}
public function update(BabyRequest $request, $id)
{
$baby = Baby::findOrFail($id);
$baby->name = $request->name;
$baby->birthday = $request->birthday;
$baby->save();
return redirect("/baby");
}
public function destroy($id)
{
$baby = Baby::findOrFail($id);
$baby->delete();
return redirect("/baby");
}
}
```
よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/26 09:23
退会済みユーザー
2019/11/26 09:43
退会済みユーザー
2019/11/26 09:45 編集
2019/11/26 10:13
退会済みユーザー
2019/11/26 10:16
2019/11/26 10:38
退会済みユーザー
2019/11/26 10:53
2019/11/26 10:56