昨日に引き続き「PHPフレームワーク Laravel入門」という書籍で勉強中ですが、モデルのadd/createアクションでエラーが出ました。
Person モデルへのaddとcreateアクションを PersonController.php に追記、ルート情報も追加後、 http://homestead.test/person/add のページは表示されますが、フォーム送信するとエラーが出ます。
関係するファイルを示しますので、アドバイスをお願いします!
さらに必要な情報がございましたら、御指摘ください。
モデル
app/Person.php
php
1<?php 2 3namespace App; 4use Illuminate\Database\Eloquent\Model; 5 6class Person extends Model 7{ 8 protected $guarded = array('id'); 9 10 public static $rules = array( 11 'name' => 'required', 12 'mail' => 'email', 13 'age' => 'integer|min:0|max:150' 14 ); 15}
コントローラ
app/Http/Controllers/PersonController.php
php
1class PersonController extends Controller 2{ 3 public function index(Request $request) { 4 $items = Person::all(); 5 return view('person.index', ['items' => $items]); 6 } 7 8 public function find(Request $request) { 9 return view('person.find', ['input' => '']); 10 } 11 12 public function search(Request $request) { 13 $item = Person::nameEqual($request->input)->first(); 14 $param = ['input' => $request->input, 'item' => $item]; 15 return view('person.find', $param); 16 } 17 18 public function add(Request $request) { 19 return view('person.add'); 20 } 21 22 public function create(Request $request) { 23 $this->validate($request, Person::$rules); 24 $person = new Person; 25 $form = $request->all(); 26 unset($form['_token']); 27 $person->fill($form)->save(); 28 return redirect('/person'); 29 } 30}
ルーティング
routes/web.php
php
1use App\Http\Middleware\HelloMiddleware; 2 3Route::get('hello', 'HelloController@index'); 4Route::post('hello', 'HelloController@post'); 5 6Route::get('hello/add', 'HelloController@add'); 7Route::post('hello/add', 'HelloController@create'); 8 9Route::get('hello/edit', 'HelloController@edit'); 10Route::post('hello/edit', 'HelloController@update'); 11 12Route::get('hello/show', 'HelloController@show'); 13 14Route::get('hello/del', 'HelloController@del'); 15Route::post('hello/del', 'HelloController@remove'); 16 17Route::get('person', 'PersonController@index'); 18Route::get('person/find', 'PersonController@find'); 19Route::post('person/find', 'PersonController@search'); 20 21Route::get('person/add', 'PersonController@add'); 22Route::post('person/add', 'PersonController@create');
ビュー
resources/views/person/add.blade.php
php
1@section('menubar') 2 @parent 3 新規作成ページ 4@endsection 5 6@section('content') 7 @if (count($errors) > 0) 8 <div> 9 <ul> 10 @foreach($errors->all() as $error) 11 <li>{{$error}}</li> 12 @endforeach 13 </ul> 14 </div> 15 @endif 16 <table> 17 <form action="/person/add" method="post"> 18 {{ csrf_field() }} 19 <tr><th>name: </th><td><input type="text" name="name" value="{{old('name')}}"></td></tr> 20 <tr><th>mail: </th><td><input type="text" name="mail" value="{{old('mail')}}"></td></tr> 21 <tr><th>age: </th><td><input type="text" name="age" value="{{old('age')}}"></td></tr> 22 <tr><th></th><td><input type="submit" value="send"></td></tr> 23 </form> 24 </table> 25@endsection
開発環境:Vagrant + VirtualBox / Homestead
言語:PHP 7.3.4-1+ubuntu18.04.1+deb.sury.org+3
フレームワーク:Laravel Framework 5.5.45
DB:SQLite
Mac OSX 10.11.6

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/26 13:08
2019/06/26 17:51
2019/06/26 18:13