我尝试使用 Livewire 获取与单个类别相关的所有子类别,但收到错误。
未定义变量$categorie_id。
问题是,我正在尝试获取并渲染给定
souscategories
的 category
。
类别
public function souscategories()
{
return $this->hasMany(Sous_categorie::class, 'categorie_id', 'id');
}
Sous_categorie
public function categories()
{
return $this->belongsTo(Categorie::class,'categorie_id','id');
}
如您所见,
Category
和 Sous_categorye
模型之间存在关系。
我的
Component
代码,我在其中获取所有Categories
:
class DropMenu extends Component
{
public $categories;
public $sous_categories;
public function mount($categorie_id)
{
$this->categories = Categorie::findOrFail($categorie_id);
}
public function render()
{
return view('livewire.drop-menu');
}
}
这是我的刀片视图:
<div>
<ul>
@foreach ($categories->souscategories as $subcategory)
<li>{{ $subcategory->nom }}</li>
@endforeach
</ul>
</div>
在我的主刀片文件中:
<ul role="tree">
@foreach ($categories as $item)
<li class="haschildren" role="treeitem" aria-expanded="false">
<div>
<a href="#" class="link font-bold font-display text-base text-jacarta-700 dark:text-white hover:text-accent focus:text-accent dark:hover:text-accent dark:focus:text-accent">{{ $item->nom }}</a>
<a aria-label="Expand submenu" href="#" data-aria-label="Expand submenu" data-aria-label-active="Collapse submenu" class="expand flex font-bold text-jacarta-700 dark:text-white">2
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" class=" dark:fill-white">
<path fill="none" d="M0 0h24v24H0z"></path>
<path d="M12 13.172l4.95-4.95 1.414 1.414L12 16 5.636 9.636 7.05 8.222z"></path>
</svg>
</a>
</div>
@livewire('drop-menu', ['categorie_id' => $categorie_id])
</li>
@endforeach
</ul>
我是 Livewire 的新手,所以我还没有尝试过任何东西。请随时告诉我我做错了什么以及是否有更好的方法。
您遇到错误,因为变量
$categorie_id
未在您尝试使用它的上下文中定义。在您的主 Blade 文件中,您尝试将 $categorie_id
传递到 drop-menu
Livewire 组件,但似乎 $categorie_id
未在该文件中的任何位置定义。
相反,您应该将
$item->id
作为 categorie_id
传递,因为 $item
是 @foreach
循环中的当前类别。
替换主 Blade 文件中的这一行:
@livewire('drop-menu', ['categorie_id' => $categorie_id])
有了这个:
@livewire('drop-menu', ['categorie_id' => $item->id])
这会将当前类别的 ID 传递给您的 Livewire 组件,这应该可以解决“未定义变量”错误。