OctoberCMS 将列表添加到选项卡字段
OctoberCMS Add List to Tab Field
我想在新选项卡下为我的用户在后端控制器中实现一个列表。
https://ibb.co/fkAWFR(添加标签字段)
UsersController::extendFormFields(function($form, $model, $context){
if (!$model instanceof UserModel)
return;
if (!$model->exists)
return;
$form->addTabFields([
'activity' => [
'tab' => 'Activity',
'type' => 'partial',
'path' => '$/acme/plugin/controllers/viewedjobs/_viewed_jobs.htm'
]
]);
});
https://ibb.co/ktHdvR(包括此列表)
我的 _viewed_jobs.htm 部分看起来像这样:
列表渲染器()?>
这会引发有关未初始化列表行为的错误。经过一番寻找,我发现了这些帖子:
https://octobercms.com/forum/post/listcontroller-error-need-help
所以我加了
$this->asExtension('ListController')->index()
到部分,现在它显示我的用户列表控制器。
我想显示我的 ViewedJobs 控制器的列表。我还在这里观看了教程:https://octobercms.com/support/article/ob-21 手动创建我的列表,但是,当我使用此代码时未定义变量。
我也尝试在 Users 插件下创建一个新的列表配置(我知道这不是最佳做法),但它会抛出关于 groups() 方法未找到的错误。
您可以轻松显示列表。
我假设您正在使用 rain-lab 用户插件,当前 UsersController 是 rain lab 的用户控制器
并且您有 工作 table 并且用户和工作表之间有 mm 关系
您需要将此代码放入插件的 boot 方法中
// first we extend users model with jobs relation
\RainLab\User\Models\User::extend(function($model) {
$model->belongsToMany['jobs'] = [\Hardiksatasiya\Test\Models\Job::class, 'table' => 'hardiksatasiya_test_job_user'];
});
// we now extend users controller to add relation behavior
// also add relational configuration
// we are doing this with not destructive method
// so our extend will play nice to other's extends
\RainLab\User\Controllers\Users::extend(function($controller) {
// Implement behavior if not already implemented
if (!$controller->isClassExtendedWith('Backend.Behaviors.RelationController')) {
$controller->implement[] = 'Backend.Behaviors.RelationController';
}
// Define property if not already defined
if (!isset($controller->relationConfig)) {
$controller->addDynamicProperty('relationConfig');
}
// Splice in configuration safely
$myConfigPath = '$/hardiksatasiya/test/models/job/config_relation_for_users.yaml';
$controller->relationConfig = $controller->mergeConfig(
$controller->relationConfig,
$myConfigPath
);
});
// now your actual code for extending fields
\RainLab\User\Controllers\Users::extendFormFields(function($form, $model, $context){
if (!$model instanceof \RainLab\User\Models\User)
return;
if (!$model->exists)
return;
$form->addTabFields([
'jobs' => [
'tab' => 'Activity',
'type' => 'partial',
'path' => '$/hardiksatasiya/test/controllers/job/_user_job_relation.htm'
]
]);
});
relation config => config_relation_for_users.yaml
jobs:
label: Jobs
view:
showCheckboxes: false
toolbarButtons: false
list: $/hardiksatasiya/test/models/job/columns.yaml
relation partial => _user_job_relation.htm
<?= $this->relationRender('jobs') ?>
如果它不起作用,请评论
我继续使用关系管理器 OctoberCMS relations
UsersController::extend(function($controller){
// Splice in configuration safely
$myConfigPath = '$/acme/plugin/controllers/ControllerName/config_relation.yaml';
$controller->relationConfig = $controller->mergeConfig(
$controller->relationConfig,
$myConfigPath
);
});
然后我将部分 _viewed_jobs.htm 更新为 <?= $this->relationRender('viewedJobs') ?>
我现在的列表是这样显示的
Completed list added to tab field for user controller
我想在新选项卡下为我的用户在后端控制器中实现一个列表。
https://ibb.co/fkAWFR(添加标签字段)
UsersController::extendFormFields(function($form, $model, $context){
if (!$model instanceof UserModel)
return;
if (!$model->exists)
return;
$form->addTabFields([
'activity' => [
'tab' => 'Activity',
'type' => 'partial',
'path' => '$/acme/plugin/controllers/viewedjobs/_viewed_jobs.htm'
]
]);
});
https://ibb.co/ktHdvR(包括此列表)
我的 _viewed_jobs.htm 部分看起来像这样:
列表渲染器()?>这会引发有关未初始化列表行为的错误。经过一番寻找,我发现了这些帖子: https://octobercms.com/forum/post/listcontroller-error-need-help
所以我加了
$this->asExtension('ListController')->index()
到部分,现在它显示我的用户列表控制器。
我想显示我的 ViewedJobs 控制器的列表。我还在这里观看了教程:https://octobercms.com/support/article/ob-21 手动创建我的列表,但是,当我使用此代码时未定义变量。
我也尝试在 Users 插件下创建一个新的列表配置(我知道这不是最佳做法),但它会抛出关于 groups() 方法未找到的错误。
您可以轻松显示列表。
我假设您正在使用 rain-lab 用户插件,当前 UsersController 是 rain lab 的用户控制器
并且您有 工作 table 并且用户和工作表之间有 mm 关系
您需要将此代码放入插件的 boot 方法中
// first we extend users model with jobs relation
\RainLab\User\Models\User::extend(function($model) {
$model->belongsToMany['jobs'] = [\Hardiksatasiya\Test\Models\Job::class, 'table' => 'hardiksatasiya_test_job_user'];
});
// we now extend users controller to add relation behavior
// also add relational configuration
// we are doing this with not destructive method
// so our extend will play nice to other's extends
\RainLab\User\Controllers\Users::extend(function($controller) {
// Implement behavior if not already implemented
if (!$controller->isClassExtendedWith('Backend.Behaviors.RelationController')) {
$controller->implement[] = 'Backend.Behaviors.RelationController';
}
// Define property if not already defined
if (!isset($controller->relationConfig)) {
$controller->addDynamicProperty('relationConfig');
}
// Splice in configuration safely
$myConfigPath = '$/hardiksatasiya/test/models/job/config_relation_for_users.yaml';
$controller->relationConfig = $controller->mergeConfig(
$controller->relationConfig,
$myConfigPath
);
});
// now your actual code for extending fields
\RainLab\User\Controllers\Users::extendFormFields(function($form, $model, $context){
if (!$model instanceof \RainLab\User\Models\User)
return;
if (!$model->exists)
return;
$form->addTabFields([
'jobs' => [
'tab' => 'Activity',
'type' => 'partial',
'path' => '$/hardiksatasiya/test/controllers/job/_user_job_relation.htm'
]
]);
});
relation config => config_relation_for_users.yaml
jobs:
label: Jobs
view:
showCheckboxes: false
toolbarButtons: false
list: $/hardiksatasiya/test/models/job/columns.yaml
relation partial => _user_job_relation.htm
<?= $this->relationRender('jobs') ?>
如果它不起作用,请评论
我继续使用关系管理器 OctoberCMS relations
UsersController::extend(function($controller){
// Splice in configuration safely
$myConfigPath = '$/acme/plugin/controllers/ControllerName/config_relation.yaml';
$controller->relationConfig = $controller->mergeConfig(
$controller->relationConfig,
$myConfigPath
);
});
然后我将部分 _viewed_jobs.htm 更新为 <?= $this->relationRender('viewedJobs') ?>
我现在的列表是这样显示的 Completed list added to tab field for user controller