繁体   English   中英

属性[ptitle]在Laravel 5中的此集合实例上不存在

[英]Property [ptitle] does not exist on this collection instance in Laravel 5

我有一张包含所有已创建产品的表,当我单击产品的“编辑”按钮之一时,出现以下错误消息: Property [ptitle] does not exist on this collection instance (View: C:\\xampp\\htdocs\\webshop\\resources\\views\\admin\\termekszerk.blade.php)有人可以帮我解决这个问题吗? 楷模:

class Category extends Model 
{

protected $fillable = ['cid', 'cname'];
protected $primaryKey = 'cid';


 public function item() 
{   
    return $this->hasMany('App\Item', 'cid');
}
}

class Item extends Model
{
protected $fillable = ['pid', 'pcat', 'pdescription', 'ptitle', 'pdb', 'par', 'pcikkszam' ];
protected $primaryKey = 'pid';


public function category()
{
    return $this->belongsTo('App\Category', 'pcat');
}

}

控制器:

public function pedit($pid)
{
    $product = Item::find($pid)->first();
    return view('admin.termekszerk', compact('product'));
}


public function pupdate(ProductFormRequest $request, $pid)
{
    $product = Item::find($pid)->first();
    $product->ptitle = $request->get('ptitle');
    $product->pcat = $request->get('pcat');
    $product->pcikkszam = $request->get('pcikkszam');
    $product->par = $request->get('par');
    $product->pdb = $request->get('pdb');
    $product->pdescription = $request->get('pdescription');

    $product->save();
    return redirect(action('CategoriesController@index', $product->pid))->with('status', 'A termék frissítve!');

}

termekszerk刀片(这是我单击“编辑”按钮之前未显示的页面):

<div class="container">
    <div class="well well bs-component">

        <form class="form-horizontal" method="post">

            @foreach ($errors->all() as $error)
                <p class="alert alert-danger">{{ $error }}</p>
            @endforeach


            <input type="hidden" name="_token" value="{!! csrf_token() !!}">

            <fieldset>
                <legend>Termék szerkesztése</legend>
                <div class="form-group">
                    <label for="title" class="col-lg-2 control-label">Termék neve</label>
                    <div class="col-lg-10">
                        <input type="text" class="form-control" id="ptitle" name="ptitle" value="{!! $product->ptitle !!}">
                    </div>
                </div>
                <div class="form-group">
                    <label for="title" class="col-lg-2 control-label">Cikkszám</label>
                    <div class="col-lg-10">
                        <input type="text" class="form-control" id="pcikkszam" name="pcikkszam" value="{!! $product->pcikkszam !!}">
                    </div>
                </div>
                <div class="form-group">
                    <label for="title" class="col-lg-2 control-label">Termék ára</label>
                    <div class="col-lg-10">
                        <input type="text" class="form-control" id="par" name="par" value="{!! $product->par !!}">
                    </div>
                </div>
                <div class="form-group">
                    <label for="title" class="col-lg-2 control-label">Mennyiség</label>
                    <div class="col-lg-10">
                        <input type="text" class="form-control" id="pdb" name="pdb" value="{!! $product->pdb !!}">
                    </div>
                </div>
                <div class="form-group">
                    <label for="content" class="col-lg-2 control-label">Termék leírás</label>
                    <div class="col-lg-10">
                        <textarea class="form-control" rows="18" id="pdescription" name="pdescription">{!! $product->pdescription !!}</textarea>
                    </div>
                </div>

                <div class="form-group">
                    <div class="col-lg-10 col-lg-offset-2">
                        <a href="/admin/create_products"><button class="btn btn-default pbtn">Mégsem</button></a>

                         <form method="post" action="{!! action('CategoriesController@pupdate', $product->pid) !!}">
                            <input type="hidden" name="_token" value="{!! csrf_token() !!}">

                            <button type="submit" class="btn btn-primary pbtn">Változtatás</button> 
                        </form>

                        <form method="post" action="{!! action('CategoriesController@pdestroy', $product->pid) !!}">
                            <input type="hidden" name="_token" value="{!! csrf_token() !!}">

                            <button type="submit" class="btn btn-danger pull-right pbtn">Törlés</button>    
                        </form>

                    </div>
                </div>
            </fieldset>
        </form>

    </div>
</div>

我发现您的代码中不应包含某些内容,也许更正它们会解决您的问题

首先在您的控制器中:

public function pedit($pid)
{
    $product = Item::find($pid)->first();
    return view('admin.termekszerk', compact('product'));
}

您使用find方法,但我不确定$ pid在表结构中是否为PK

找到后使用first()方法; 它不是必需的,因为find方法将获得一行

例如,如果您的桌子是这样的

表:

-id(自动increamnet)

-pid

当您使用find($ pid)在id列中进行搜索时,仅发现一行

因此您可以像这样更改代码:

public function pedit($pid)
{
    $product = Item::where('pid',$pid)->first();
    return view('admin.termekszerk', compact('product'));
}

但是,如果pid是您表中的PK ,则应在找到后删除first()方法

secound:

我不知道你为什么使用{!! !!} {!! !!}

您应该正常使用{{ }}而不是刀片中的刀片

但是,如果您将数据存储为HTML代码,则可以使用{!! !!} {!! !!}获得HTML代码

显示未转义的数据

默认情况下,Blade {{}}语句是通过PHP的htmlspecialchars函数自动发送的,以防止XSS攻击。 如果您不想转义数据,则可以使用以下语法:

如果您以后添加了“ ptitle”,并且数据库中以前的产品没有ptitle,则可能就是这导致错误的原因

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM