对于我的项目,我使用用户插件和翻译插件。 我已经向用户添加了自定义新字段,现在我想翻译它们。
我想我知道为什么它不起作用。但是找不到解决方案。 有人有主意吗?
如果我添加到$ model->可翻译的默认字段(例如“电子邮件”),则效果很好。
我使用此代码向我的自定义插件添加了启动功能
\RainLab\User\Models\User::extend(function ($model) {
$model->implement[] = 'RainLab.Translate.Behaviors.TranslatableModel';
$model->translatable = ['about', 'preview_text'];
});
答案 0 :(得分:1)
嗯,
有一个问题。当您尝试直接添加$model->translatable
时,似乎将其视为模型的attribute
。
尝试此操作
$model->addDynamicProperty(variable_name, value);
\RainLab\User\Models\User::extend(function ($model) {
$model->implement[] = 'RainLab.Translate.Behaviors.TranslatableModel';
$model->addDynamicProperty('translatable', ['about', 'preview_text']);
// like this ^
});
应将其视为局部变量,并且应该可以工作。
如有疑问,请发表评论。
问题::翻译机制是,它监听
backend.form.extendFieldsBefore
事件中的表单,然后注册要翻译的字段。当我们尝试使用form
扩展名在extendFormFields
中注册新字段时,此操作随后发生,因此新添加的字段对翻译侦听器不可见。因此,由于已经完成翻译字段注册过程,因此可以略过它们。
解决方案:因此,对于解决方案,我们只需在翻译注册发生之前添加我们的字段即可。幸运的是,翻译插件在监听此事件-1
时具有最低的backend.form.extendFieldsBefore
优先级,因此我们可以在此之前注册我们的字段,因此我们现在还可以,并且可以添加我们的字段,然后才能处理翻译字段。
代码
\Event::listen('backend.form.extendFieldsBefore', function($widget) {
// You should always check to see if you're extending correct model
if (!$widget->model instanceof \RainLab\User\Models\User) {
return;
}
// we will merge current fields with fields we want to add
// we used shorthand + plus operator for this
$widget->tabs['fields'] = $widget->tabs['fields'] + Config::get('rms.secis::user_fields');
// here Config::get('rms.secis::user_fields') is just returning field array
// Fo ref. Ex:
// return [
// 'gender' => [
// 'label' => 'Gender',
// 'tab' => 'Security Island',
// 'type' => 'radio',
// 'options' => [
// 'male' => 'Male',
// 'female' => 'Female'
// ],
// 'span' => 'auto'
// ],
// ];
});
注意:我们正在向选项卡添加字段,因此我们使用
$widget->tabs['fields']
至add fields to the tabs
。如果要添加normal fields
或secondary tab fields
,则可以分别使用$widget->fields
和$widget->secondaryTabs['fields]
。
是的translator
现在可以看到我们的字段及其处理的内容,它也应该能够在frontend-ui中显示翻译UI。
如有任何疑问,请发表评论。
答案 1 :(得分:0)
@ hardik-satasiya
是的,前端没有更多错误,但是新的问题是,字段上没有转换功能。 也许要向控制器添加jQuery脚本?
没有JQuery和October Framework文件的集成: https://octobercms.com/plugin/rainlab-translate
文档结尾