RainLab User – полулярный плагин для управления пользователями фронтенда в OctoberCMS. В плагине у пользователей имеется минимальный набор полей – фамилия, имя, почта и группа пользователей. Но очень легко можно добавить нужные поля из своего плагина.
Для начала создадим нужные поля в БД, для этого создаем новую версию/миграцию (файл /updates/version.yaml в папке плагина):
1.3.37:
- 'Updated table users'
- update_users_add_new_field.php
Файл миграции (нужно указать нужный тип поля, для примера строка из одного символа) /updates/update_users_add_new_field.php в папке плагина:
<?php namespace YourPluginNamespace\PluginName\Updates;
use Schema;
use October\Rain\Database\Updates\Migration;
class UpdateUsersAddNewField extends Migration
{
public function up()
{
Schema::table('users', function($table)
{
$table->string('new_field', 1);
});
}
public function down()
{
Schema::table('users', function($table)
{
$table->dropColumn('new_field');
});
}
}
Запускаем миграцию в консоли:
php artisan october:up
Расширяем модель UserModel и добавляем поля на форму редактирования и просмотра пользователя (UsersController) в /Plugin.php в папке плагина:
//...
use RainLab\User\Controllers\Users as UsersController;
use RainLab\User\Models\User as UserModel;
//...
class Plugin extends PluginBase
{
//...
public function boot()
{
UserModel::extend(function($model)
{
$model->addFillable([
'new_field',
]);
});
UsersController::extendFormFields(function($form, $model, $context)
{
if (!$model instanceof UserModel) {
return;
}
$form->addTabFields([
'new_field' => [
'label' => 'New Field',
'tab' => 'New Tab Name',
'span' => 'auto'
],
]);
});
}
//...
}
Готово, можем работать с новым полем обычным способом:
$user = \Auth::getUser();
$user->new_field = 'Y';
$user->save();