2017-08-16 11 views
-1

ビュー:Laravel 5.4は、送信ボタンを検出していないとMassAssignmentException _tokenエラーが与えられている

@extends('admin.layout.admin') 
@section('content') 
<div class="navbar"> 
    <a class="navbar-brand" href="#">Categories=></a> 
    <ul class="nav navbar-nav"> 
    @if(!empty($categories)) 
     @forelse($categories as $category) 
    <li> 
     <a href="{{route('category.show',$category->id)}}">{{$category->name}}</a> 
    </li> 
     @empty 
    <li>No Data</li> 
     @endforelse 
    @endif 
    </ul> 
    <a class="btn btn-primary" data-toggle="modal" href="#modal-id">Add Category</a> 
    <div class="modal fade" id="modal-id"> 
     <div class="modal-dialog"> 
      {!! Form::open(['route' => 'category.store', 'method' => 'post']) !!} 
      <div class="modal-content"> 
       <div class="modal-header"> 
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
        <h4 class="modal-title">Add Category</h4> 
       </div> 
       <div class="modal-body"> 
        <div class="form-group"> 
         {{Form::label('name','Name') }} 
         {{Form::text('name',null,array('class' => 'form-control')) }} 
        </div> 
       </div> 
       <div class="modal-footer"> 
        <button type="submit" class="f btn btn-primary" >Save changes</button> 
        <button type="button" class="f data-dismiss="modal">Close</button> 
        <div class="clr"></div> 
       </div> 
      </div> 
      {!! Form::close() !!} 
     </div> 
    </div> 
</div> 
@endsection 

コントローラー:

<?php 
namespace App\Http\Controllers; 

use App\Category; 
use Illuminate\Http\Request; 

class CategoriesController extends Controller 
{ 
    /** 
    * Display a listing of the resource. 
    * 
    * @return \Illuminate\Http\Response 
    */ 
    public function index() 
    { 
     $categories=Category::all(); 
     return view('admin.category.index',compact('categories')); 
     } 

    /** 
    * Show the form for creating a new resource. 
    * 
    * @return \Illuminate\Http\Response 
    */ 
    public function create() 
    { 
     // 
    } 

    /** 
    * Store a newly created resource in storage. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @return \Illuminate\Http\Response 
    */ 
    public function store(Request $request) 
    { 
     Category::create($request->all()); 
     return back(); 
    } 

    /** 
    * Display the specified resource. 
    * 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function show($id) 
    { 
     // 
    } 

    /** 
    * Show the form for editing the specified resource. 
    * 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function edit($id) 
    { 
     // 
    } 

    /** 
    * Update the specified resource in storage. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function update(Request $request, $id) 
    { 
     // 
    } 

    /** 
    * Remove the specified resource from storage. 
    * 
    * @param int $id 
    * @return \Illuminate\Http\Response 
    */ 
    public function destroy($id) 
    { 
     // 
    } 
} 

ボタンは、私はと緑の代わりに灰色で表示されている「送信」 Php Stormを使って何が問題なのか私を助けることができます。事前に感謝

答えて

0

あなたが正規形ではないコレクションのHTMLを使用する場合、あなたは

{{ csrf_field() }} 

を追加します。お使いのモデルでは、

// pass all the name in your form in your case just name 
protected $fillable = ['name']; 

filedenご入力の名前を渡す必要があります。また、

protected $guarded // here you pass what is not going to add 
+0

おかげで弟を使用することができます!!!!それは働いた – Faiez

1

あなたはトークン不一致例外を防ぐために、フォームにCSRFトークンフィールドを追加する必要があります

フォームで使用するこのヘルパーを:

{{ csrf_field() }} 

または

<input type="hidden" name="_token" value="{{ csrf_token() }}"> 

また、あなたの送信ボタンのクラスはbtn-primaryで、これは緑色ではありません!

2

「MassAssignmentException」について言いたいこととして、それはあなたが新しいデータを追加しようとすることを意味するが、正しいプロパティ$充填可能な

protected $fillable = ['name', ....]; 

https://laravel.com/docs/5.4/eloquent#mass-assignment

また、あなたは$ guaredを使用することができますを準備していませんあなたのデータを保護するだけのものです。

protected $guarded = ['price']; 
関連する問題