Это будет немного долго, но не проблема, мы решим это:)
Есть 2 способа сделать это.
- Добавьте прямое поле в таблицу
user
и начните использовать его, и все готово.
- Создайте другую таблицу
UserExtension
в базе данных [очевидно, с новым плагином] и добавьте динамическую взаимосвязь oneToOne
в пользовательскую таблицу к этой таблице, а затем сохраните все новые данные в эту таблицу, используя отношение.
На данный момент мы должны пойти на 1st
, как кажется, вы хотите только один field
так
- добавить фактическое поле в таблицу [таблица базы данных]
- расширение
backend forms
, чтобы показать, что поле [сохранение данных будет работать автоматически]
Создать скрипт обновления [Имя класса => AddSlugToUserTable] Имя файла будет в случае змеи => add_slug_to_user_table.php
. Добавьте этот файл в каталог updates
вашего плагина.
<?php namespace HardikSatasiya\Plugin\Updates;
use Schema;
use October\Rain\Database\Updates\Migration;
class AddSlugToUserTable extends Migration
{
public function up()
{
Schema::table('users', function($table)
{
// make it nullable as we are adding it and existing records may not have any data for it so
$table->string('slug')->nullable()->index();
});
// or even you can add converted data to slug field
// from existing user name
}
public function down()
{
// don't want to mess with data so better be empty
}
}
Теперь добавьте информацию об этом файле в version.yaml
файле. создайте этот файл, если его нет в папке updates
. [ этот файл очень чувствителен к пробелам, поэтому используйте 2 пробела для табуляции и избегайте лишних пробелов. ]
1.0.1:
- Initialize plugin.
1.0.2:
- Adding Slug Field to User Table.
- add_slug_to_user_table.php
Следующим шагом будет добавление поля формы в Backend Form
, добавление этого кода в ваш метод plugin.php => boot
.
class Plugin extends PluginBase
{
[...]
public function boot()
{
// Extend all backend form usage
\Event::listen('backend.form.extendFields', function($widget) {
// Only for the User controller
if (!$widget->getController() instanceof \RainLab\User\Controllers\Users) {
return;
}
// Only for the User model
if (!$widget->model instanceof \RainLab\User\Models\User) {
return;
}
// Add an extra birthday field
$widget->addFields([
'slug' => [
'label' => 'Slug',
'comment' => 'Add Slug To User',
'preset' => [
'field' => 'name',
'type' => 'slug'
]
]
]);
});
}
}
Теперь Logout
[если вы уже вошли в систему] из бэкэнда и Login
снова, чтобы применить все это. Затем откройте User From.
Вы увидите новое блестящее поле slug
, которое может автоматически заполняться из name
[, вы можете изменить его из предустановленной конфигурации ]
если у вас возникли проблемы или сомнения, пожалуйста, прокомментируйте.