【问题标题】:I'm trying to show data from database in my blade.php file but I get this error "Trying to get property 'name' of non-object"我正在尝试在我的 Blade.php 文件中显示数据库中的数据,但我收到此错误“尝试获取非对象的属性‘名称’”
【发布时间】:2021-10-22 22:31:01
【问题描述】:
<div class="nieuws2">
        @foreach($product as $product)
            <div class="nieuwsber bericht{{$product->id}}">
                <h2>{{$product->name}}</h2>
                <img src="{{$product->image}}">
                <span>€{{$product->price}}</span>
            </div>
        @endforeach
    </div>
    <form class="saleform" method="post" action="sale">
        <h2>Plaats je bestelling</h2>
        @csrf
        <label for="name">Naam (voornaam + achternaam)</label><br>
        <input type="text" id="name" name="name"><br><br>
        <label for="adres">adres (straat + nr + postcode + gemeente)</label><br>
        <input type="text" id="adres" name="adres"><br><br>
        @foreach ($product as $product)
            <label for="{{$product->name}}">{{$product->name}}</label><br>
            <input type="number" id="{{$product->name}}" name="{{$product->name}}" value="0"><br><br>
            <input type="hidden" id="price" name="price" value="{{$product->price}}">
        @endforeach
        <input type="submit">
    </form>

第一个 @foreach 工作正常,它可以满足需要。但后来我尝试在同一个刀片文件中再次执行此操作,但由于某种原因它无法正常工作。它应该做的是遍历每个产品并使其成为一个数字输入,以便客户可以将 x-amount 添加到他的订单中。

我的控制器如下所示:

public function index(){
        $product = product::get();
        return view ('pages.verkoop', [
            'product' => $product
        ]);

【问题讨论】:

    标签: php laravel foreach laravel-blade


    【解决方案1】:

    您通过将循环名称设为变量 $product (foreach ($product as $product)) 来覆盖 $product 的值。您应该为正在迭代的内容使用不同的变量名称,并为您尝试执行的操作使用循环的当前值:

    foreach ($products as $product)
    

    将集合重命名为 $products 将是一个简单的解决方法。现在,您不会通过让循环设置 $product 变量来覆盖 $products

    【讨论】:

    【解决方案2】:

    好吧,显然你不能 foreach 在一个刀片文件中循环同一个对象两次。我通过将控制器更改为此来修复它

    public function index(){
            $product = product::get();
            $product2 = product::get();
            return view ('pages.verkoop', [
                'product' => $product,
                'product2' => $product2,
            ]);
        }
    

    并将blade.php 更改为:

    <div class="nieuws2">
            @foreach($product as $product)
                <div class="nieuwsber bericht{{$product->id}}">
                    <h2>{{$product->name}}</h2>
                    <img src="{{$product->image}}">
                    <span>€{{$product->price}}</span>
                </div>
            @endforeach
        </div>
        <form class="saleform" method="post" action="sale">
            <h2>Plaats je bestelling</h2>
            @csrf
            <label for="name">Naam (voornaam + achternaam)</label><br>
            <input type="text" id="name" name="name"><br><br>
            <label for="adres">adres (straat + nr + postcode + gemeente)</label><br>
            <input type="text" id="adres" name="adres"><br><br>
            @foreach ($product2 as $product2)
                <label for="{{$product2->name}}">{{$product2->name}}</label><br>
                <input type="number" id="{{$product2->name}}" name="{{$product2->name}}" value="0"><br><br>
                <input type="hidden" id="price" name="price" value="{{$product2->price}}">
            @endforeach
            <input type="submit">
        </form>
    

    所以这是一个奇怪的 laravel 事情。有谁知道这是为什么?

    【讨论】:

      猜你喜欢
      • 2021-02-10
      • 2021-08-05
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-08
      • 2021-08-10
      • 2018-01-16
      相关资源
      最近更新 更多