Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Привет всем , не сочтите за рекламу , но после некоторых поисков нашел на github админку. Но застрял в одном месте . А именно каскадные списки. Перепробовал множество вариантов . Может моего ума не хватает , поэтому прошу помощи. Может кто уже использовал эту прогу . Мне нужно например в выпадающем списке при выборе department чтобы выбирались соответсвующие категории . Имеются 2 таблицы departments и categories в таблице categories присутствует поле department_id . Пример находится здесь. :
https://laravel-admin.org/docs/en/model … g%20select
Заранее благодарен откликнувшемся.
P.S только если можно обьяснить для тех кто в танке .
Вот мои потуги :
Маршрут
Route::resource('/admin/departments-categories',DepartmentCategoryController::class);
Контроллер:(по логике если аргумент Request я выбрал функцию метод Store)
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Category;
class DepartmentCategoryController extends Controller
{
public function store(Request $request)
{
$department_id = $request->get('q');
return Category::departments_categories()->where('parent_id', $department_id)->get(['id', DB::raw('name as text')]);
}
}
Нашел функцию Load:
public function load($field, $sourceUrl, $idField = 'id', $textField = 'text', bool $allowClear = true){
if(Str::contains($field, '.')){
$field = $this->formatName($field);
$class = str_replace(['[', ']'], '_', $field);
} else{
$class = $field;
}
$placeholder = json_encode([
'id' => '',
'text' => trans('admin.choose'),
]);
$strAllowClear = var_export($allowClear, true);
$script = <<<EOT
$(document).off('change', "{$this->getElementClassSelector()}");
$(document).on('change', "{$this->getElementClassSelector()}", function () {
var target = $(this).closest('.fields-group').find(".$class");
$.get("$sourceUrl",{q : this.value}, function (data) {
target.find("option").remove();
$(target).select2({
placeholder: $placeholder,
allowClear: $strAllowClear,
data: $.map(data, function (d) {
d.id = d.$idField;
d.text = d.$textField;
return d;
})
});
if (target.data('value')) {
$(target).val(target.data('value'));
}
$(target).trigger('change');
});
});
EOT;
Admin::script($script);
return $this;
}
Ну и моя форма :
$form->select('department_id','Select Department')
->options(Department::orderBy('name')->pluck('name','id'))->default( function()
{
$department = Product::latest()->first();
return($department->department_id);
})->load('departments_categories','/admin/departments-categories');
$form->select('departments_categories');
Теоретически , вроде как должно работать. Но увы . Как говорил Жванецкий , у них работает , а у меня два часа на пару , и не работает .
Не в сети
С этой проблемой разобрался , всем Спасибо.
Не в сети
Страницы 1