Добавить слаг для пользователя (RainLab) OctoberCms

Можно ли добавить слаг в пользовательскую таблицу, если это возможно, то как это сделать?

Я пытаюсь сделать это как обычно, но это не работает с пользователем таблицы

class User extends Model{
use \October\Rain\Database\Traits\Sluggable;

protected $slugs = ['slug' => 'name'];

}

Я добавляю поле slug в пользовательскую таблицу, но оно все еще нулевое

заранее спасибо

1 ответ

Это будет немного долго, но не проблема, мы решим это:)

Есть 2 способа сделать это.

  1. Добавить прямое поле к user стол и начать использовать его, и мы сделали.
  2. Создать другую таблицу UserExtension в базе данных [очевидно, с новым плагином] и добавить динамический корабль отношений oneToOne к пользовательской таблице в эту таблицу, а затем сохраните все новые данные в этой таблице, используя отношение.

А пока мы должны пойти на 1st как кажется, вы хотите только один field так

  1. добавить фактическое поле в таблицу [таблица базы данных]
  2. простираться 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 [ Вы можете изменить его из предустановленного конфига ]

Если у вас возникли проблемы или сомнения, пожалуйста, прокомментируйте.