2017-08-16 1 views
-1

Ausblick:Laravel 5.4 erkennt nicht Submit-Button und MassAssignmentException _token Fehler gegeben

@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 

Controller:

<?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) 
    { 
     // 
    } 
} 

Schaltfläche "Senden" wird in der grauen Farbe erscheinen, statt grün, wie ich bin mit Php Storm. Jeder kann mir helfen, was das Problem ist. Vielen Dank im Voraus

Antwort

0

Sie hinzufügen

{{ csrf_field() }} 

Wenn Sie eine normale Form nicht die HTML-Sammlung verwenden. In Ihrem Modell müssen Sie den Namen Ihrer Eingabe übergeben Fileden

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

oder Sie können

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

Dank Bruder verwenden !!!! Das hat funktioniert – Faiez

1

Sie sollten csrf Token Feld zum Formular verhindern Token Mismatch Ausnahme hinzufügen:

Verwendung dieser Helfer in Ihrer Form:

{{ csrf_field() }} 

oder

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

auch Ihre Submit Button's Klasse ist btn-primary und das ist nicht grün!

2

Wie zu sagen „MassAssignmentException“, es bedeutet, dass Sie versuchen, neue Daten hinzufügen, haben aber nicht die richtige Eigenschaft $ ausfüllbare vorbereitet

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

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

Auch könnten Sie $ guared Eigenschaft, nur um Ihre Daten zu schützen.

protected $guarded = ['price'];