【问题标题】:Trying to get property 'photo' of non-object试图获取非对象的属性“照片”
【发布时间】:2020-06-03 17:55:16
【问题描述】:

当我实现创建视图时它工作正常,但在实现显示视图后它停止工作并抛出以下错误:

Facade\Ignition\Exceptions\ViewException 试图获取非对象的属性“foto”(查看:C:\xampp\htdocs\alme\resources\views\aluminio\show.blade.php) http://127.0.0.1:8000/aluminio/create

AluminioController.php

    {
        $productos = Aluminio::all();
        return view('aluminio.index',compact("productos"));
    }

    public function show($id)
    {
        $productos =Aluminio::find($id);
        return view('aluminio.show', compact('productos'));
    }

    public function create()
    {
        return view('aluminio.create');
    }

    public function store(Request $request){

        $productos = $request->all();

        if($request->hasFile('foto')){
            $productos['foto']=$request->file('foto')->store('uploads','public');
        }        
        Aluminio::create($productos);

        return redirect(route('aluminio'));
    }

web.php

Route::get('aluminio', 'AluminioController@index')->name('aluminio');
Route::get('aluminio/{id}', 'AluminioController@show')->name('aluminio.show');
Route::get('aluminio/create', 'AluminioController@create')->name('aluminio.create');
Route::post('aluminio', 'AluminioController@store')->name('aluminio.store');

create.blade.php

@section('contenido')
            <div class="content-fluid">

                <div class="row justify-content-center">
                <form action="{{ route("aluminio.store") }}" method="post" enctype="multipart/form-data">
                  @csrf
                      <div class="col-10">
                        <div class="form-group">
                          <label  for="tipologia" class="control-label">Tipología</label>
                          <input type="text" class="form-control" name="tipologia" id="tipologia">
                          </div>
                          <div class="form-group">
                          <label  for="caracteristicas" class="control-label">Características</label><br>                            
                          <textarea name="caracteristicas" id="caracteristicas" cols="30" rows="10"></textarea>
                          </div>
                          <div class="form-group">
                          <label  for="foto" class="control-label">Foto</label>                           
                          <input type="file" class="form-control" name="foto" id="foto">
                          </div>
                          <div class="form-group">
                          <button class="btn btn-primary" type="submit">Crear</button>
                         </div>
                      </div>                       
                    </form>                 
                </div>
            </div>
            @endsection

show.blade.php

@section('contenido')
            <div class="content-fluid">

                <div class="jumbotron">
                    <div class="row">
                        <div class="col-6">
                            <img src="{{ asset('storage').'/'.$productos->foto }}" class="card-img-top" width="100" height="300" alt="...">
                        </div>
                        <div class="col-6">
                            <h1 class="display-4">{{ $productos->tipologia }}</h1>
                            <hr class="my-4">
                            <p class="lead">{{ $productos->caracteristicas}}</p>                        
                            <a class="btn btn-primary btn-lg" href="{{ route('aluminio') }}" role="button">Atras</a>

                        </div>
                    </div>


                  </div>
            </div>
            @endsection

【问题讨论】:

  • 这个ID真的存在吗?尝试使用$productos = Aluminio::findOrFail($id) 来获取模型。
  • 很可能您成功存储了图像文件,但是....检查文件名是否存储在数据库中。
  • 检查您的桌子,我确定您的照片没有正确存储。存储您的照片名称,您不能将文件存储在表中(没有 bolb 数据)
  • 图像已正确保存在数据库中,显示视图正常工作,它显示图像的所有数据,但是当我要创建新产品时,它给了我错误,如果我在视图中创建,这是我不明白的,因为它给了我一个显示视图错误

标签: laravel laravel-5 eloquent


【解决方案1】:

问题来了

<img src="{{ asset('storage').'/'.$productos->foto }}" class="card-img-top" width="100" height="300" alt="...">

转义错误 在显示方法中

$productos =Aluminio::findOrFail($id);

这将返回一个中止页面

没有产品的原因,而您试图获得的财产 不存在的东西。

【讨论】:

  • 按照您的建议修改方法告诉我页面找不到它,我不明白我是否正在访问创建视图并且显示视图工作正常
  • 表示你传递的id在db中不存在,在db中查看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-09
相关资源
最近更新 更多