是否可以在用户表中添加一个slug, 如果有可能,那怎么办?
我像往常一样尝试这样做,但它不适用于表用户
class User extends Model{
use \October\Rain\Database\Traits\Sluggable;
protected $slugs = ['slug' => 'name'];
}
我在用户表中添加了slug字段, 但它仍然是空的
提前谢谢
答案 0 :(得分:2)
它会有点冗长,但没问题我们会解决它:)
有两种方法可以做到。
user
表并开始使用它,我们就完成了。UserExtension
[显然使用新插件]并将动态关系发送oneToOne
添加到此表的用户表中,然后使用关系将所有新数据保存到此表中。现在我们应该选择
1st
,因为您似乎只需要一个field
所以
backend forms
以显示字段[保存数据将自动生效] 创建更新脚本[Class name => AddSlugToUserTable] 文件名将处于snake case =>
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
[您可以从预设配置中更改]自动填充
如果您有任何问题或疑问,请发表评论。