2016-06-30 10 views
5

मैं Laravel 5.1 PHP ढांचे का उपयोग कर रहा से डिफ़ॉल्ट वस्तु बना रहा है। जब मैं अपने रिकॉर्ड को अपडेट करने की कोशिश, मैं त्रुटि मिलती है:Laravel 5.1 रिक्त मान

"ErrorException in AdminController.php line 108: Creating default object from empty value".

मैं गूगल में खोज की है लेकिन मैं अपने समस्या को हल करने के लिए कोई परिणाम नहीं मिल रहा।

मार्गों

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 

उत्तर

4

समस्या टी है टोपी $product = Product::find($id);NULL देता है। चेक जोड़ें:

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

हालांकि यह आपकी अद्यतन विधि है, इसलिए शायद इस विधि के लिए यूआरएल बनाने के दौरान आपको कोई त्रुटि हो रही है। यह एक गलत आईडी हो सकती है जिसे आप इस मार्ग से गुजर रहे हैं।

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

सूचना घुंघराले ब्रेसिज़, ब्लेड की वाक्य रचना {{ expression }} ही नहीं, {} है:

आपका प्रपत्र action में त्रुटि है। तो idproduct.update मार्ग को पास नहीं हो। बस के लिए इसे बदल:

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

edit.blade.php में, यह नहीं होना चाहिए '{{$ id}}' आप '$' –

+0

भूल गया आप सही हैं। –

+0

मैं परिवर्तन कार्रवाई लेकिन कुछ नहीं के रूप में बनाने के लिए, मैं RouteCollection.php लाइन में नए त्रुटि NotFoundHttpException 161 मिलती है: –

0

जांच उत्पाद मौजूद है तो है अद्यतन रूप की तरह इस

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

$ साइन :)

1

याद आ रही थी अद्यतन इकाई के लिए दिखेगा laravel में PUT विधि नहीं पोस्ट उपयोग करता है। फॉर्म विधि अद्यतन करें और कोशिश करें।

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

<input name="_method" type="hidden" value="PUT"> 
+0

एचटीएमएल रूपों में कोई 'विधि = "पुट" नहीं है। केवल 'प्राप्त करें' और 'POST'। –

+0

हाँ, मैंने अपना जवाब अपडेट कर लिया है। –

संबंधित मुद्दे