Livewire Blade 视图中未定义变量 $categorie_id 问题

问题描述 投票:0回答:1

我尝试使用 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 的新手,所以我还没有尝试过任何东西。请随时告诉我我做错了什么以及是否有更好的方法。

laravel undefined laravel-livewire
1个回答
0
投票

您遇到错误,因为变量

$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 组件,这应该可以解决“未定义变量”错误。

© www.soinside.com 2019 - 2024. All rights reserved.