Добавить слаг для пользователя (RainLab) OctoberCms - PullRequest
0 голосов
/ 08 мая 2018

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

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

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

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

}

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

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

1 Ответ

0 голосов
/ 10 мая 2018

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

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

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

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

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

enter image description here

Вы увидите новое блестящее поле slug, которое может автоматически заполняться из name [, вы можете изменить его из предустановленной конфигурации ]

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

...