it-swarm.com.de

Laravel 5.1 Standardobjekt aus leerem Wert erstellen

Ich benutze Laravel 5.1 PHP Framework. Wenn ich versuche, meinen Datensatz zu aktualisieren, erhalte ich die Fehlermeldung:

"ErrorException in AdminController.php Zeile 108: Standardobjekt Aus leerem Wert erstellen".

Ich habe in Google gesucht, finde aber keine Ergebnisse, um mein Problem zu lösen.

Routen

Route::get('/admin/no', '[email protected]');
Route::get('/admin/product/destroy/{id}', '[email protected]');
Route::get('/admin/new', '[email protected]');
Route::post('/admin/product/save', '[email protected]');
Route::get('/admin/{id}/edit', '[email protected]');
Route::patch('/admin/product/update/{id}', '[email protected]')

AdminController

 public function edit($id)
    {

        $product = Product::find($id);
        return view('admin.edit', compact('product'));

    }

    public function update(Request $request, $id)
    {

        $product = Product::find($id);
        $product->id = Request::input('id');
        $product->name = Request::input('name');
        $product->description = Request::input('description');
        $product->price = Request::input('price');
        $product->imageurl = Request::input('imageurl');


        $product->save();
        //return redirect('/admin/nο');

    }
    enter code here

edit.blade.php

div class="panel panel-info">
        <div class="panel-heading">
            <div class="panel-title">Edit Product</div>
        </div>
        <div class="panel-body" >
            <form action="/admin/product/update/{id}" method="POST"><input type="hidden" name="_method" value="PATCH"> <input type="hidden" name="_token" value="{{ csrf_token() }}">
    enter code here
6
Kristin K

Das Problem ist, dass $product = Product::find($id);NULL zurückgibt. Fügen Sie die Prüfung hinzu:

if(!is_null($product) {
   //redirect or show an error message    
}

Obwohl dies die Aktualisierungsmethode ist, haben Sie wahrscheinlich einen Fehler beim Erstellen der URL für diese Methode. Möglicherweise ist es eine falsche ID, die Sie an diese Route übergeben.

Ihr Formular action hat einen Fehler:

<form action="/admin/product/update/{id}" method="POST">

Beachten Sie die geschweiften Klammern. Die Syntax von Blade ist {{ expression }} und nicht nur {}. id wird also niemals an die product.update-Route übergeben. Ändern Sie es einfach in:

<form action="/admin/product/update/{{$id}}" method="POST">
4
Ivanka Todorova

Für Update Entity in Laravel verwendetPUTMethode nichtPOST. Formularmethode aktualisieren und versuchen.

<form action="/admin/product/update/{id}">

<input name="_method" type="hidden" value="PUT">
1
Hiren Makwana

prüfen Sie, ob das Produkt vorhanden ist, und führen Sie dann das Update durch

<form action="/admin/product/update/{{$id}}" method="POST">

$ Zeichen fehlte :)

0
Samvedna