2016-11-23 35 views
1

我填寫表格編輯客戶端,則必須使用介入圖像附加的圖像,它是產生以下錯誤:ErrorException在ClientController.php線120:嘗試分配非對象的屬性Laravel 5.2

ErrorException in ClientController.php line 120: Attempt to assign property of non-object.

這是我的模型:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Client extends Model 
{ 
    protected $table = 'clients'; 

    protected $fillable = ['status_id', 'name', 'identity', 'address', 'location', 'l_number', 'province_id', 'email', 'email2', 'phone', 'movil', 'requirement_id', 'budget', 'user_id', 'comments']; 

    // Relation with Status client 
    public function statusclient() 
    { 
     return $this->belongsTo('App\Statusclient', 'status_id'); 
    } 

    // Relation with Province 
    public function province() 
    { 
     return $this->belongsTo('App\Province'); 
    } 

    // Relation with Province 
    public function requirement() 
    { 
     return $this->belongsTo('App\Requirement'); 
    } 

    // Relation with User 
    public function user() 
    { 
     return $this->belongsTo('App\User'); 
    } 
} 

這是我的更新方法:

public function update(Request $request, $id) 
    { 
     $updated = Client::findorFail($id); 

     $this->validate($request, [ 
      'name' => 'required' 
     ]); 

     $clients = $request->all(); 

     $updated->fill($clients)->save(); 

     if($request->hasFile('avatar')){ 
      $avatar = $request->file('avatar'); 
      $filename = time() . '.' . $avatar->getClientOriginalExtension(); 
      Image::make($avatar)->resize(300, 200)->save(public_path('uploads/clients/' . $filename)); 

      $clients->avatar = $filename; 
      $clients->save(); 
     } 

     return redirect()->route('clients.index') 
         ->with('success','Cliente actualizado satisfactoriamente!!!'); 
    } 

這是形式:

{!! Form::model($clients, ['method' => 'PATCH','route' => ['clients.update', $clients->id], 'enctype' => 'multipart/form-data']) !!} 

    <div class="row"> 

     <div class="col-md-4 col-xs-4"> 

      <div class="form-group"> 
       <strong>Estado cliente:</strong> 
       {!! Form::select('status_id', $statusclients, null, ['class' => 'form-control']) !!} 
      </div> 

      <div class="form-group"> 
       <strong>Nombre:</strong> 
       {!! Form::text('name', null, array('placeholder' => 'Nombres o razón social','class' => 'form-control')) !!} 
      </div> 

      <div class="form-group"> 
       <strong>Documento de identidad:</strong> 
       {!! Form::text('identity', null, array('placeholder' => 'Cedula, pasaporte o RNC...','class' => 'form-control')) !!} 
      </div> 

      <!-- left column --> 
      <div class="form-group"> 
       <div class="text-center"> 
        <a href="#" class="thumbnail"> 
         <img src="{{ URL::asset('uploads/clients/' . $clients->avatar) }}" class="avatar img-thumbnail" alt="avatar" style="height: 180px; width: 100%;"> 
         <h6>Cambia la imagen del documento de identidad del cliente...</h6> 
         <input type="file" name="avatar" class="text-center center-block well well-sm" style="width: 100%;"> 
        </a> 
       </div> 
      </div> 

     </div> 

     <div class="col-md-4 col-xs-4"> 

      <div class="form-group"> 
       <strong>Dirección:</strong> 
       {!! Form::text('address', null, array('placeholder' => 'Dirección','class' => 'form-control')) !!} 
      </div> 

      <div class="form-group"> 
       <strong>Sector:</strong> 
       {!! Form::text('location', null, array('placeholder' => 'Localidad','class' => 'form-control')) !!} 
      </div> 

      <div class="form-group"> 
       <strong>Número:</strong> 
       {!! Form::text('l_number', null, array('placeholder' => 'Número propiedad','class' => 'form-control')) !!} 
      </div> 

      <div class="form-group"> 
       <strong>Provincia:</strong> 
       {!! Form::select('province_id', $provinces, null, ['class' => 'form-control']) !!} 
      </div> 

      <div class="form-group"> 
       <strong>Email:</strong> 
       {!! Form::text('email', null, array('placeholder' => 'Email','class' => 'form-control')) !!} 
      </div>    

      <div class="form-group"> 
       <strong>Email secundario:</strong> 
       {!! Form::text('email2', null, array('placeholder' => 'Email secundario','class' => 'form-control')) !!} 
      </div> 

      <div class="row">   

       <div class="col-md-6"> 

        <div class="form-group"> 
         <strong>Teléfono:</strong> 
         {!! Form::text('phone', null, array('placeholder' => 'Número de teléfono','class' => 'form-control')) !!} 
        </div> 

       </div> 

       <div class="col-md-6"> 

        <div class="form-group"> 
         <strong>Movil:</strong> 
         {!! Form::text('movil', null, array('placeholder' => 'Número de movil','class' => 'form-control')) !!} 
        </div> 

       </div> 

      </div>   

     </div> 

     <div class="col-md-4 col-xs-4">    

      <div class="form-group"> 
       <strong>Necesidad del cliente:</strong> 
       {!! Form::select('requirement_id', $requirements, null, ['class' => 'form-control']) !!} 
      </div> 

      <div class="form-group"> 
       <strong>Presupuesto:</strong> 
       {!! Form::text('budget', null, array('placeholder' => 'Presupuesto del cliente','class' => 'form-control')) !!} 
      </div> 
      <div class="form-group"> 
       <strong>Gestor:</strong> 
       {!! Form::select('user_id', $users, null, ['class' => 'form-control']) !!} 
      </div> 
      <div class="form-group"> 
       <strong>Comentarios:</strong> 
       {!! Form::textarea('comments', null, array('placeholder' => 'Comentar sobre algun detalle sobre el cliente','class' => 'form-control', 'size' => '30x5')) !!} 
      </div> 
     </div> 

     <div class="form-group col-md-4 col-xs-4"> 
      <a class="btn btn-warning" href="{{ route('clients.index') }}" data-toggle="tooltip" rel="tooltip" data-placement="top" title="Retornar"> 
       <i class="material-icons">arrow_back</i> 
      </a> 

      <button type="submit" class="btn btn-success" data-toggle="tooltip" rel="tooltip" data-placement="top" title="Actualizar"> 
       <i class="material-icons">cached</i> 
      </button>    
     </div> 
    </div> 
    {!! Form::close() !!} 

這是錯誤的在瀏覽器中的堆棧:

1. in ClientController.php line 120 
2. at HandleExceptions->handleError('2', 'Attempt to assign property of non-object', 'C:\xampp\htdocs\zizaco_entrust\app\Http\Controllers\ClientController.php', '120', array('request' => object(Request), 'id' => '2', 'updated' => object(Client), 'clients' => array('_method' => 'PATCH', '_token' => 'Be325FU0P1utedgMUR1uR91QXQXoHsYFrlCCrXDa', 'status_id' => '2', 'name' => 'Jenny Lopez', 'identity' => '00010076966', 'address' => 'Calle 3ra, Esq. 9, Tropical del Este, Las Americas', 'location' => 'Tropical del Este, Las Americas', 'l_number' => '20', 'province_id' => '31', 'email' => '[email protected]', 'email2' => '[email protected]', 'phone' => '8095678910', 'movil' => '8298662101', 'requirement_id' => '1', 'budget' => '10000', 'user_id' => '2', 'comments' => 'Interesado en apartamento de 2 habitaciones, en la zona colonial. ', 'avatar' => object(UploadedFile)), 'avatar' => object(UploadedFile), 'filename' => '1479867405.jpg')) in ClientController.php line 120 
3. at ClientController->update(object(Request), '2') 
4. at call_user_func_array(array(object(ClientController), 'update'), array(object(Request), 'clients' => '2')) in Controller.php line 80 
5. at Controller->callAction('update', array(object(Request), 'clients' => '2')) in ControllerDispatcher.php line 146 
6. at ControllerDispatcher->call(object(ClientController), object(Route), 'update') in ControllerDispatcher.php line 94 
7. at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request)) 
8. at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52 
9. at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
10. at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
11. at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 96 
12. at ControllerDispatcher->callWithinStack(object(ClientController), object(Route), object(Request), 'update') in ControllerDispatcher.php line 54 
13. at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\ClientController', 'update') in Route.php line 174 
14. at Route->runController(object(Request)) in Route.php line 140 
15. at Route->run(object(Request)) in Router.php line 724 
16. at Router->Illuminate\Routing\{closure}(object(Request)) 
17. at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52 
18. at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Authenticate.php line 28 
19. at Authenticate->handle(object(Request), object(Closure)) 
20. at call_user_func_array(array(object(Authenticate), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136 
21. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
22. at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 
23. at Pipeline->Illuminate\Routing\{closure}(object(Request)) in VerifyCsrfToken.php line 29 
24. at VerifyCsrfToken->handle(object(Request), object(Closure)) 
25. at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136 
26. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
27. at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 
28. at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ShareErrorsFromSession.php line 49 
29. at ShareErrorsFromSession->handle(object(Request), object(Closure)) 
30. at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136 
31. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
32. at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 
33. at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StartSession.php line 64 
34. at StartSession->handle(object(Request), object(Closure)) 
35. at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136 
36. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
37. at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 
38. at Pipeline->Illuminate\Routing\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37 
39. at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) 
40. at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136 
41. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
42. at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 
43. at Pipeline->Illuminate\Routing\{closure}(object(Request)) in EncryptCookies.php line 59 
44. at EncryptCookies->handle(object(Request), object(Closure)) 
45. at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136 
46. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
47. at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 
48. at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
49. at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
50. at Pipeline->then(object(Closure)) in Router.php line 726 
51. at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 699 
52. at Router->dispatchToRoute(object(Request)) in Router.php line 675 
53. at Router->dispatch(object(Request)) in Kernel.php line 246 
54. at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) 
55. at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52 
56. at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Debugbar.php line 51 
57. at Debugbar->handle(object(Request), object(Closure)) 
58. at call_user_func_array(array(object(Debugbar), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136 
59. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
60. at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 
61. at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44 
62. at CheckForMaintenanceMode->handle(object(Request), object(Closure)) 
63. at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136 
64. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) 
65. at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32 
66. at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
67. at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
68. at Pipeline->then(object(Closure)) in Kernel.php line 132 
69. at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99 
70. at Kernel->handle(object(Request)) in index.php line 54 
+1

標出錯誤行可能會有所幫助。 –

+0

對不起,我沒有看到它是如何組織的。 –

+1

'$ clients'不是一個對象,我認爲它是一個數組。我將它改爲'$ updated-> avatar' – Beginner

回答

1

所以這裏的問題是雙重的:

  • 首先,你正試圖設置屬性avatar,這在request陣列中不存在。
  • 其次,你試圖更新$clients這實際上是一個數組 - 這意味着你不能save()什麼,因爲它不是一個模型。

從剛纔看你的代碼,它會出現,你會想做的事:

$updated->avatar = $filename; 
$updated->save(); 

相反的:

$clients->avatar = $filename; 
$clients->save(); 

希望這有助於!

+2

只需要注意,'$ request-> all()'返回一個數組,所以'$ clients'實際上是一個數組,而不是'Request'對象。這就是導致報告的初始錯誤(試圖爲數組(非對象)分配'avatar'屬性)。 – patricus

+0

非常感謝,解決了我的錯誤並考慮到了它的建議。 –

+1

@patricus相應修正 – Derek

相關問題