Создание плагина - часть 3. Разработка компонента
В заключительной части создания плагина мы рассмотрим процесс разработки компонента. Он будет выводить обычную форму, с помощью которой можно будет добавить книгу через frontend сайта.
1. Первым делом создаём необходимую структуру в папке плагина. В моём случае это так:
plugins/
cmsdev/
library/
components/
bookadd/ (на одном уровне с файлом)
BookAdd.php
код файла BookAdd.php у меня получился такой:
<?php
namespace Cmsdev\Library\Components;
use Cms\Classes\ComponentBase;
use Input;
use Validator;
use Redirect;
use Cmsdev\Library\Models\Book;
use Flash;
use ValidationException;
class BookAdd extends ComponentBase
{
public function componentDetails(){
return [
'name' => 'Добавление книг',
'description' => 'Добавление книг через публичную часть сайта'
];
}
public function defineProperties(){
return [
'title_form' => [
'title' => 'Заголовок формы',
'description' => 'Заголовок формы для отображения',
'default' => "Форма по умолчанию",
],
];
}
public function save(){
$validator = Validator::make(
$form = Input::all(), [
'title' => 'required',
'description' => 'required'
]
);
if ($validator->fails()) {
return Redirect::back()->withErrors($validator);
}
$book = new Book();
$book->title = Input::get('title');
$book->description = Input::get('description');
$book->save();
Flash::success('Книга добавлена!');
}
}
Вкратце пройдёмся по используемым методам:
componentDetails() - здесь задаётся имя и описание компонента, которое будет отображаться в админке, в разделе Components.
defineProperties() - различные настройки компонента, которые впоследствии задаются через поля.
save() - метод-обработчик формы.
2. Регистрируем компонент в файле Plugin.php в методе registerComponents:
public function registerComponents()
{
return [
'Cmsdev\Library\Components\BookAdd' => 'book_add',
];
}
3. Создаём страницу, на которой будет располагаться компонент. Делается это через CMS->Pages->Add. Настройки страницы у меня получились такие:
название файла: book-add.htm
маршрут: /book-add
4. Добавляем наш компонент на созданную страницу через подраздел Components.
5. В папке components, в папке с именем компонента создаём файл default.htm В нём будет находиться view. Содержимое файла будет таким:
<form method="POST" action="{{ url('book-add') }}" accept-charset="UTF8">
<input type="hidden" name="_handler" value="save">
{{ form_token() }}
{{ form_sessionKey() }}
<label>Название книги</label>
<input type="text" name="title">
<label>Описание книги</label>
<input type="textarea" name="description">
<button type="submit">Сохранить книгу</button>
{% flash success %}
<p>{{ message }}</p>
{% endflash %}
<ul>
{% for error in errors.all() %}
<li>{{ error }}</li>
{% endfor %}
</ul>
</form>
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии ()