2016-06-30 1 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

문제는 t이며 모자 $product = Product::find($id);NULL을 반환합니다. 수표 추가 :

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

이 방법은 업데이트 방법이지만이 방법에 대한 URL을 작성하는 중에 오류가 발생했을 수 있습니다. 이 경로를 지나가고있는 잘못된 ID 일 수 있습니다.

<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 라인 161에서 새로운 에러 NotFoundHttpException을 얻는다. –

0

검사 : 그냥으로 변경 laravel에서 PUT 메서드를 사용하지 않음 POST을 사용합니다. 양식 메서드를 업데이트하고 시도하십시오.

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

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

누락 된 모양을 않는 존재하는 경우

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

HTML 폼에는'method = "PUT"이 없습니다. 'GET'과'POST' 만. –

+0

예, 답변을 업데이트했습니다. –