Получить выбранное значение из поля select_from_array, используя рюкзак laravel 5.2

Я использую Laravel 5.2 Backpack в своем новом проекте, где у меня есть поле select_from_array в моей форме, в зависимости от выбранного значения я хочу, чтобы данные отображались в другом поле select_from_array. Не знаю, как это сделать. Пожалуйста, помогите мне с этим. это мой код

Контроллер.php

public function __construct()
{
    if (Request::segment(3) == 'create') {
        $parentField1 = [
        'name' => 'cat_id',
        'label' => 'Category',
        'type' => 'select_from_array',
        'options' => $this->categories(),
        'allows_null' => false,
        ];
        $parentField = [
            'name' => 'subCat_id',
            'label' => 'SubCategory',
            'type' => 'select_from_array',
            'options' => $this->subcategories(),
            'allows_null' => false,
        ];

        array_unshift($this->crud['fields'], $parentField1,$parentField);

    }

public function categories()
{
    $cat = Request::get('cat_id');

    $currentId = 0;
    if (Request::segment(4) == 'edit' and is_numeric(Request::segment(3))) {
        $currentId = Request::segment(3);
    }

    $entries = Category::where('translation_lang', config('app.locale'))->where('parent_id',0)->orderBy('lft')->get();
    if (is_null($entries)) {
        return [];
    }

    $tab = [];
    $tab[0] = 'Root';
    foreach ($entries as $entry) {
        if ($entry->id != $currentId) {
            $tab[$entry->translation_of] = '- ' . $entry->name;
        }
    }
    return $tab;
}

public function subcategories()
{
    $currentId = 0;

    if (Request::segment(4) == 'edit' and is_numeric(Request::segment(3))) {
        $currentId = Request::segment(3);
    }

    $entries = Category::where('translation_lang', config('app.locale'))->where('parent_id','!=' ,0)->orderBy('lft')->get();

    if (is_null($entries)) {
        return [];
    }

    $tab = [];
    $tab[0] = 'Root';
    foreach ($entries as $entry) {
        if ($entry->id != $currentId) {
            $tab[$entry->translation_of] = '- ' . $entry->name;
        }
    }
    return $tab;
}

Мне нужен идентификатор выбранной опции в subcategories(), где я могу использовать идентификатор для получения данных.


person Pooja Krishna    schedule 23.09.2016    source источник
comment
Вам не хватает закрывающего } в методе __construct.   -  person Ben Rhys-Lewis    schedule 26.09.2016


Ответы (1)


Я думаю, что лучший способ для вас - создать настраиваемый тип поля для этой конкретной цели, который включает оба варианта выбора. Выполните эту процедуру. Начните с файла select2.blade.php и добавьте javascript, необходимый для достижения вашей цели (при изменении события в первом select2 измените параметры в следующем select2).

person tabacitu    schedule 23.09.2016
comment
на самом деле в моей базе данных и категория, и подкатегория сохраняются в одной таблице, и я не знаю, как писать отношения. когда я использую select2, они запрашивают функцию отношения..... пожалуйста, помогите мне с этим - person Pooja Krishna; 05.10.2016
comment
Я понимаю. Поле select2 не будет работать без отношений. Честно говоря, отношения в Laravel обязательны. В противном случае вам, вероятно, вообще не следует использовать Laravel. Вы можете узнать об отношениях в документации здесь: laravel.com/docs/5.3/eloquent-relationships - но лично я бы рекомендовал потратить 9 долларов за месячный доступ к Laracasts. Вы можете очень легко изучить Laravel, посмотрев несколько видео. Это, в частности, объясняет многие основные концепции, а также отношения (видео 8): laracasts.com/series/laravel-5-from-scratch - person tabacitu; 05.10.2016