Добавить слаг для пользователя (RainLab) OctoberCms
Можно ли добавить слаг в пользовательскую таблицу, если это возможно, то как это сделать?
Я пытаюсь сделать это как обычно, но это не работает с пользователем таблицы
class User extends Model{
use \October\Rain\Database\Traits\Sluggable;
protected $slugs = ['slug' => 'name'];
}
Я добавляю поле slug в пользовательскую таблицу, но оно все еще нулевое
заранее спасибо
1 ответ
Это будет немного долго, но не проблема, мы решим это:)
Есть 2 способа сделать это.
- Добавить прямое поле к
user
стол и начать использовать его, и мы сделали. - Создать другую таблицу
UserExtension
в базе данных [очевидно, с новым плагином] и добавить динамический корабль отношенийoneToOne
к пользовательской таблице в эту таблицу, а затем сохраните все новые данные в этой таблице, используя отношение.
А пока мы должны пойти на
1st
как кажется, вы хотите только одинfield
так
- добавить фактическое поле в таблицу [таблица базы данных]
- простираться
backend forms
чтобы показать это поле [сохранение данных будет работать автоматически]
Создать сценарий обновления [ Class name => 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
[ Вы можете изменить его из предустановленного конфига ]
Если у вас возникли проблемы или сомнения, пожалуйста, прокомментируйте.