0

是否可以在用户表中添加一个 slug,如果可以,那么怎么做?

我尝试像往常一样做,但它不适用于表用户

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

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

}

我在用户表中添加了 slug 字段,但它仍然为空

先感谢您

4

1 回答 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

如果您有任何问题或疑问,请发表评论。

于 2018-05-10T18:02:20.870 回答