LaravelRUS / SleepingOwlAdmin

🦉 Administrative interface builder for Laravel (Laravel admin)
http://sleepingowladmin.ru/
MIT License
805 stars 217 forks source link

Customize form buttons #430

Closed butschster closed 7 years ago

butschster commented 7 years ago

Сейчас форма имеет стандартный набор кнопок, который нельзя ни расширить ни толком изменить, максимум изменить текст.

При нажатии на кнопку формы действие обрабатывается в контроллере https://github.com/LaravelRUS/SleepingOwlAdmin/blob/development/src/Http/Controllers/AdminController.php#L183 и появляется дополнительная проблема с тем, что мы не можем изменять логику.

Я предлагаю переработать класс FormButtons, а именно сделать каждую кнопку в виде отдельного класса, в котором мы могли бы добавлять кнопку, указывать ее расположение и описывать действие, вызываемое при нажатии на кнопку.

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

Пример

$form = AdminForm::default();
$button = new ControlButton('save', 'Save', function(ModelConfigurationInterface $model, Request $request, $backUrl) {
       return redirect()->back()->with(['_redirectBack' => $backUrl])
});

$button->setOrder(100);
$form->getButtons()->add($button)
butschster commented 7 years ago

427

Butochnikov commented 7 years ago

@butschster Порядок нужен только для общего ряда кнопок (вдруг кому нужно "Отмена" 1-ой поставить). Группировать я предлагаю только кнопки типа "save". Сортировать их не нужно, изначально будет заложенный нами порядок. Единственно, нужно указывать какая из них будет по умолчанию. Если захочется сделать свою кнопку или группу, то это уже custom и порядок определят сам разработчик.

ghost commented 7 years ago

Вообщем я это сделал. Старался максимум удобства для конечных пользователей думаю мне удалось это сделать. @butschster @Butochnikov