SPLADE with Laravel -如何创建动态级联类别/子类别选择?

xvw2m8pv  于 2023-04-22  发布在  其他
关注(0)|答案(2)|浏览(128)

这是一个经典的例子,但我使用的是来自www.example.com的令人惊叹的slade.devSPLADE,而且不能让它工作。
用例:用户选择一个主类别,然后只有该类别的子类别必须显示在子类别中供他选择。
在控制器中:

$categories = Category::whereNull('parent_id')->orderBy('name')->pluck('name', 'id');

在刀片中:

<x-splade-select :options="$categories" label="Category" name="category_id" />
                <x-splade-select :options="$subcategories" label="Sub-category" name="subcategory_id" remote-url="/getSubcategories/${form.categoryId}" />

getSubcategories是一个API,用于检索给定$category_id的子类别:

$subcategories = Category::whereNotNull('parent_id')->where('parent_id', $category_id)->pluck('name', 'id');

上面刀片中的${form.categoryId}不正确,如何获取当前表单的category_id发送给API?

3npbholx

3npbholx1#

我以前在我的项目中也处理过这个问题。我的解决方案是:

  • 获取所有主要类别
  • 获取所有子类别(在子类别html中添加class属性)
  • Create js handle main category选项:选中以按类名显示/隐藏子类别。

注:对于小类:)

xfb7svmp

xfb7svmp2#

解决了:
在刀片中:

<x-splade-select :options="$categories" label="Category:" name="category_id" />
 <x-splade-select label="Sub-category" name="subcategory_id" remote-url="`/api/getSubcategories/${form.category_id}`" select-first-remote-option />

其中$categories从控制器传递:

$categories = Category::whereNull('parent_id')->where('active', 1)->orderBy('name')->pluck('name', 'id');

API返回$subcategories如下:

public function getSubcategories(int $category_id = NULL) //Request $request
    {
        $subcategories = NULL;

        if ($category_id) {
            $subcategories = Category::whereNotNull('parent_id')
                ->where('parent_id', $category_id)
                ->where('active', 1)
                // ->orderBy('name') //pluck ignores it anyway
                ->pluck('name', 'id');
        } else {
            $subcategories = Category::whereNotNull('parent_id')
                ->where('active', 1)
                // ->orderBy('name') //pluck ignores it anyway
                ->pluck('name', 'id');
        }

        return $subcategories;
    }

相关问题