2017-09-17 6 views
0

私はLaravelを初めて使っています。著者や書籍を追加、変更、削除することでcrud操作の例を作ろうとしています。私の作家は大丈夫ですが、私はこのエラーを取得する作成した作者を取得することにより、本を作成しよう:Laravel - ErrorException未定義のインデックス:ファーストネーム

ErrorException (E_NOTICE) 
"Undefined index: firstname" 

だから、HERESに私のコード: 私Authors.php

class Authors extends Model 
{ 
    protected $table ='authors'; 
    protected $fillable = ['firstname','lastname']; 

    public function book() 
    { 
     return $this->hasMany('Books','author'); 
    } 
} 

私Books.php:

(それは実際に例外を取得します)

私BooksController.php:

public function create() 
    { 
     return view('books.index'); 
    } 

    public function store(Request $request) 
    { 

     $inputs = $request->all(); 

     $book = new Books(); 
     $book->title = $inputs['title']; 

     $book->author()->attach($inputs['firstname']); 
     $book->author()->attach($inputs['lastname']); 

     $book->save(); 
     return redirect('/books'); 
    } 

私のindex.php:だから

@section('content') 

    <div class="container"> 
     <form method="post" action="{{url('books')}}"> 
      <div class="form-group row"> 
       {{csrf_field()}} 
       <label for="lgFormGroupInput" class="col-sm-2 col-form-label col-form-label-lg">Title</label> 
       <div class="col-sm-10"> 
        <input type="text" class="form-control form-control-lg" id="lgFormGroupInput" placeholder="title" name="title"> 
       </div> 
      </div> 
      <div class="form-group row"> 
       {{csrf_field()}} 
       <label for="lgFormGroupInput" class="col-sm-2 col-form-label col-form-label-lg">Author</label> 
       <div class="col-sm-10"> 
        <select id="author" name="author"> 
         <option value="Z">Select an author</option> 
         @foreach ($authors as $author) 
         <option value="{{$author['id']}}">{{$author['firstname']}} {{$author['lastname']}}</option> 
         @endforeach 
        </select> 
       </div> 
      </div> 
        <input type="submit" value="Create" /> 
     </form> 
    </div> 

    <div class="container"> 
     <table class="table table-striped"> 
      <thead> 
      <tr> 
       <th>ID</th> 
       <th>Title</th> 
       <th>Author</th> 
      </tr> 
      </thead> 
      <tbody> 
      @foreach($books as $book) 
       <tr> 
        <td>{{$book['id']}}</td> 
        <td>{{$book->$author['firstname']}} {{$book->$author['lastname']}}</td> 
        <td><a href="{{action('[email protected]', $book['id'])}}" class="btn btn-warning">Edit</a></td> 
        <td> 
         <form action="{{action('[email protected]', $book['id'])}}" method="post"> 
          {{csrf_field()}} 
          <input name="_method" type="hidden" value="DELETE"> 
          <button class="btn btn-danger" type="submit">Delete</button> 
         </form> 
        </td> 
       </tr> 
      @endforeach 
      </tbody> 
     </table> 
    </div> 
@endsection 

、私は私はこの例外を取得しない理由はわかりません私のコントローラの店...事前に感謝!

+0

名前が 'firstname'の入力がありません。 –

+0

それは私の著者モデルにありますか? – mastaofthepasta

+0

これは__your形式__です。 –

答えて

0

これは、フォームに入力フィールドがないためです。フォームには名前がfirstnameの入力が含まれている必要があります。

$inputsフィールドをダンプすることで確認できます。たとえば、dd($inputs)です。あなたのフォームにfirstnameという名前の入力フィールドがないので、この変数にはfirstnameというインデックスが含まれていません。

+0

ええ、私の著者は実際に私が上記のインデックステンプレートを投稿したので本の選択フィールドです、どうすればそれらを保存できますか? – mastaofthepasta

+0

@mastaofthepasta @u_mulderと@Imranの両方があなたに何を伝えているのか理解しているとは思いません。あなたのフォームに 'firstname'という名前の入力はありませんが、あなたのコードではあなたのことを前提としています。 –

+0

フォームからファーストネームを入力しないようにしますか?ここのコードの問題はLaravelとは関係がありません。問題はHTMLとPHP @mastaofthepastaです – Imran

関連する問題