Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 20.02.2021 02:25:21

Encore laravel-admin

Привет всем , не сочтите за рекламу , но после некоторых поисков нашел на 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');

Теоретически , вроде как должно работать. Но увы . Как говорил Жванецкий , у них работает , а у меня два часа на пару , и не работает . roll

Не в сети

#2 20.02.2021 16:33:52

Re: Encore laravel-admin

С этой проблемой разобрался , всем Спасибо.

Не в сети

Подвал раздела