Как показать значение по умолчанию в опции выбора (parent_id)? - PullRequest
1 голос
/ 22 мая 2019

Я попытался успешно сохранить parent_id из Category в Laravel 5.8, но сейчас хочу отредактировать категорию.

CategoryController.php

public function edit(Category $category)
{
    return view('Admin.categories.edit', compact('category'));
}

public function update(CategoryRequest $request, Category $category)
{
    $category->update($request->all());

    return redirect(route('categories.index'));
}

edit.blade.php

<form action="{{ route('categories.update', $category->id) }}" method="post">
    {{ method_field('PATCH') }}
    {{ csrf_field() }}
    @include('Admin.layouts.errors')
    <div class="form-group">
        <label for="name">Name</label>
        <input type="text" class="form-control" value="{{ old('name') ? : $category->name  }}" id="name" name="name">
    </div>
    <div class="form-group">
        <label for="parent_id">Sub Category</label>
        <select class="form-control" id="parent_id" name="parent_id" data-live-search="true">
            @foreach(\App\Category::all() as $category)
                <option value="{{ $category->id }}" {{ trim($category->id) , $category->pluck('id')->toArray() ? 'selected' : ''  }}>{{ $category->name }}</option>
            @endforeach
        </select>
    </div>
    <button type="submit" class="btn btn-primary">Save</button>
</form>

Например, у меня есть следующие категории в базе данных.

id          name            parent_id

1       Software        0
2       Hardware        0
3       Photoshop       1
4       CoredDraw       1

Если пользователь, например, выбирает CorelDraw для редактирования, откройте для него редактирование. Выберите входной тег name и напишите CorelDraw. Выберите тег parent_id, выберите Программное обеспечение. Потому что это parent_id = 0.

1 Ответ

1 голос
/ 22 мая 2019

Вам нужно сделать некоторые базовые улучшения в вашем коде. Выполнить пожарный запрос в модели или в контроллере.

Blade-файл не предназначен для загрузки данных из базы данных.

Контроллер

public function edit(Category $category)
{
    $allCategory = \App\Category::all();
    return view('Admin.categories.edit', compact('category','allCategory'));
}

Blade

<select class="form-control" id="parent_id" name="parent_id" data-live-search="true">
    <option value="">Select Parent</option> 
    @foreach($allCategory as $cate)
        <option value="{{ $cate->id }}" {{ $category->id == $cate->id ? 'selected' : ''  }}>{{ $cate->name }}</option>
    @endforeach
</select>

Как только пользователь начинает вводить имя другой категории, вынеобходимо сбросить поле выбора, используя любой клиентский скрипт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...