Экран админки
<?php
namespace App\Http\Controllers\Admin\Screens;
use Wtolk\Crud\Form\Checkbox;
use Wtolk\Crud\Form\Column;
use Wtolk\Crud\Form\DateTime;
use Wtolk\Crud\Form\File;
use Wtolk\Crud\Form\Link;
use Wtolk\Crud\Form\MultiFile;
use Wtolk\Crud\Form\Summernote;
use Wtolk\Crud\Form\TableField;
use Wtolk\Crud\FormPresenter;
use App\Models\Adfm\Page;
use Wtolk\Crud\Form\Input;
use Wtolk\Crud\Form\Button;
class PageScreen
{
public $form;
public $request;
public function __construct()
{
$this->form = new FormPresenter();
$this->request = request();
}
public static function index()
{
$screen = new self();
$screen->form->template('table-list'); // Объявляем шаблон страницы с таблицей
$screen->form->source([
'pages' => Page::filter(request()->input('filter'))->paginate(50) // Задаем модели для экрана
]);
$screen->form->title = 'Страницы'; // Заголовок экрана
$screen->form->addField(
TableField::make('title', 'Название страницы')
->link(function ($model) {
echo Link::make($model->ru_title)->route('adfm.pages.edit', ['id' => $model->id])
->render();
})
);
$screen->form->addField(TableField::make('created_at', 'Дата создания'));
$screen->form->addField(
TableField::make('', '')
->link(function ($model) {
echo Link::make('Удалить')->route('adfm.pages.destroy', ['id' => $model->id])->render();
})
);
$screen->form->addField(
TableField::make('', '')
->link(function ($model) {
echo Link::make('Просмотр')->route('adfm.show.page', ['slug' => $model->slug])->render();
})
);
$screen->form->filters(self::getFilters()); // Объявляем поля по которым будем фильтровать таблицу
$screen->form->buttons([ // Кнопки на экране
Link::make('Добавить')->class('button')->icon('note')->route('adfm.pages.create')
]);
$screen->form->build();
$screen->form->render();
}
public static function create()
{
$screen = new self();
$screen->form->isModelExists = false;
$screen->form->template('form-edit')->source([
'page' => new Page()
]);
$screen->form->title = 'Создание страницы';
$screen->form->route = route('adfm.pages.store');
$screen->form->columns = self::getFields(); // В свойство поля передаем метод, в котором возвращаем список полей
$screen->form->buttons([
Button::make('Сохранить')->icon('save')->route('adfm.pages.update')->submit(),
]);
$screen->form->build();
$screen->form->render();
}
public static function edit()
{
$screen = new self();
$screen->form->isModelExists = true;
$screen->form->template('form-edit')->source([
'page' => Page::findOrFail($screen->request->route('id'))
]);
$screen->form->title = 'Редактирование страницы';
$screen->form->route = route('adfm.pages.update', $screen->form->source['page']->id);
$screen->form->columns = self::getFields();
$screen->form->buttons([
Button::make('Сохранить')->icon('save')->route('adfm.pages.update')->submit(),
Button::make('Удалить')->icon('trash')->route('adfm.pages.destroy')->canSee($screen->form->isModelExists),
Link::make('Добавить в меню')->icon('trash')
->route('adfm.menuitems.createFromModel', [
'model_name' => 'Page',
'model_id' => $screen->request->route('id'),
'menu_id' => '0',
])->canSee($screen->form->isModelExists)
]);
$screen->form->build();
$screen->form->render();
}
public static function getFilters() {
return [
Input::make('filter.title:like')->title('Заголовок страницы')->setFilter(),
Input::make('filter.content:like')->title('Текст страницы')->setFilter(),
];
}
public static function getFields() {
return [
Column::make([
Input::make('page.ru_title')
->title('Заголовок на русском')
->required(),
Input::make('page.title')
->title('Заголовок на английском')
->required(),
Summernote::make('page.ru_content')->title('Содержимое на русском')->devMode($dev_mode),
Summernote::make('page.content')->title('Содержимое на английском')->devMode($dev_mode),
MultiFile::make('page.files')->title('Прикрепленные документы')
]),
Column::make([
Input::make('page.slug')
->title('Вид в адресной строке'),
Input::make('page.meta.title')
->title('TITLE (мета-тег)'),
Input::make('page.meta.description')
->title('Description (мета-тег)'),
])->class('col col-md-4')
];
}
}
Нет комментариев