Laravel 无法将集合/数组从组件类返回到组件

问题描述

如果我在渲染方法中使用 dd() 则输出到屏幕

Illuminate\Support\Collection {#1355 ▼
  #items: array:1 [▼
    0 => {#1360 ▼
      +"provider": "provider"
      +"name": "name"
      +"id": 2
      +"price": 35.0
    }
  ]
}

这是 ProductSelect 组件类。试过了...

  1. view('components.product-select',['products'=>$products]);
  2. view('components.product-select',compact('products'));
  3. view('components.product-select',['products'=>$products->toArray()]);
  4. view('components.product-select')->with(['products'=>$products->toArray()]);

和其他一些

。我很困惑,因为 DD 将发送到屏幕。但是当我在视图中使用该变量时,它没有将其拾取..

 public function render()
    {
        $products = $this->products->execute(['user_id'=> $this->userid,'att_id'=>$this->attid]);
        dd($products);
        return view('components.product-select')->with(['products'=>$products]);
    }

product-select.blade 在这里。我试图用这里的产品输出创建另一个组件。

 <div  {{ $attributes->merge(['class' => 'modal-body row '. $classBody])}}>
      @foreach ($products as $product)
         <x-product-card
             class="w-100"
            :name="$product->name"
            :description="$product->description"
            :productid="$product->id"
            :price="$product->price"
            >
         </x-product-card>
      @endforeach
 <div {{ $attributes->merge(['class' => 'modal-footer ' . $classFoot])}}>
     {{ $buttons }}
 </div>

有什么想法吗?

解决方法

看起来我的问题是命名问题。我正在将一个动作传递给控制器​​以获取数据..

public $products;

public function __construct(AllowedProducts $products)
{
        $this->products = $products;
}

然后无意中尝试重用该变量。这导致了问题..

public function render()
    {
        $products= $this->products->execute(['user_id'=> $this->userid,'att_id'=>$this->attid]);
        return view('components.product-select',[
            'products' => $products,]);
    }

所以我将其更改为 $test 并且它起作用了。无需将其添加到类列表中的变量中。我不确定这是否是一个错误。在框架中

public function render()
    {
        $test= $this->products->execute(['user_id'=> $this->userid,[
            'test' => $test,]);
    }