Кнопка выбора выбора с вложенными категориями в Laravel - PullRequest
0 голосов
/ 26 сентября 2018

извините за мой плохой язык :) У меня есть таблица с многоуровневыми категориями, такими как:

category_id ------ category_name--------parent_id
1------------------sample 1 ------------ NULL
2------------------sample 2 ------------ 1
3------------------sample 3 ------------ NULL

и ...

теперь мне нужно, чтобы эти данные были в выбранномменю параметров

это моя форма:

<div class="form-group">
        <label class="col-sm-2 control-label">مادر</label>
        <div class="text-right col-sm-10">
            <select name="parent_id" class="select2 form-control" id="parent_id">
                <option value="">انتخاب دسته مادر</option>
                @foreach ($categories as $cat)
                    <option value="{{ $cat -> category_id }}"
                            {{ isset($productItem) && $productItem->category_id == $cat->category_id ? 'selected':'' }}
                    >{{ $cat -> category_name }}</option>
                @endforeach
            </select>
        </div>
    </div>

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Вы должны использовать <optgroup>, чтобы сделать некоторые "вложенные" опции.Проверьте этот пример .

Ваш код будет:

<select name="parent_id" class="select2 form-control" id="parent_id">
  <option value="">انتخاب دسته مادر</option> <!-- default -->
  @foreach ($categories->where('parent_id', null) as $cat) <!-- first level only: no parent -->

    <!-- if parent must also be selectable, you can add an option for it before its optgroup -->
    <option value="{{ $cat->category_id }}">
      {{ $cat->category_name }}
    </option>

    @if($cat->children->count()) <!-- if has children -->
    <optgroup label="{{$cat->category_name}}"> <!-- display parent optgroup and within child categories option -->
      @foreach($cat->children as $child)
        <option value="{{ $child -> category_id }}">
          {{ $child -> category_name }}
        </option>
      @endforeach
    </optgroup>
    @endif
  @endforeach
</select>

Это должно создать:

  • <optgroup> для каждой родительской категории
  • <option> помещенонепосредственно перед optgroup для родительских категорий
  • <option> для каждой дочерней категории
0 голосов
/ 26 сентября 2018

должно быть таким

, но на уровне 3 у меня проблема

, и я изменил свой код:

<select name="parent_id" class="select2 form-control" id="parent_id">
                <option value="">انتخاب دسته مادر</option>
                @foreach ($categories as $cat)
                    @if($cat -> parent_id == NULL)
                        <option value="{{ $cat -> category_id }}">
                            {{ $cat -> category_name }}
                        </option>
                    @endif
                    @if ($cat->children->count() > 0)
                        @foreach($cat->children as $child)
                            <option value="{{ $child -> category_id }}">
                                {{ $child -> category_name }}
                            </option>
                        @endforeach
                    @endif
                @endforeach
            </select>
...