OctoberCMS:如何根据 parent 表单域预填充 child 表单域
OctoberCMS: How to prefill a child form field based on a parent form field
我只是想在 OctoberCMS 后端建立一个关系,其中 child 表单应该从 parent 表单中获取一个值作为建议(默认)。
详细地说,有两个模型通过 belongsTo 关系链接(参加者属于锦标赛)
第一个涵盖体育赛事的 parent 模型 (field.yaml):
tournament:
# ... some other fields
start_date:
label: Start date
type: date
attendees:
label: Attendees
type: partial
第 2 个 child 模型与会者:
attendee:
name:
label: Name
type: text
start_date:
label: Start date
type: date
# how to get the value from tournament->start_date as preset?
parent 表格(在体育比赛中)有开始日期以及相关的部分涵盖参加比赛的运动员。每个运动员还有一个单独的开始日期字段,我想在 parent 锦标赛表格调用此表格后立即预先填写比赛的开始日期。但它必须是可编辑的,因为并非所有与会者都会在同一天开始。
有一个内置函数可以使用相同表单的另一个字段的值来预设一个字段,但不幸的是我找不到如何从 parent 表单中获取值的解决方案。
提前致谢!
您可以将 relationExtendManageWidget
方法添加到 Tournament controller
中并扩展其行为。您现在可以 inject initial values for your new modal
创建新记录。
// ..code
class Tournament extends Controller
{
// ..code
public function __construct()
{
// ..code
}
public function relationExtendManageWidget($widget, $field, $model)
{
// make sure we are doing on correct relation
// also make sure our context is create so we only copy name on create
if($field === 'attendees'
&& property_exists($widget->config, 'context')
&& $widget->config->context === 'create'
) {
$widget->config->model->start_date = $model->start_date;
// this is attendee ^ model ^ this is main tournament model
}
}
}
Now when your try to create a new attendee record
from your Tournament record
, your attendee's start_date
will be pre-filled based on your tournament's start_date
and it only happens on creating new records.
如有疑问请评论。
我只是想在 OctoberCMS 后端建立一个关系,其中 child 表单应该从 parent 表单中获取一个值作为建议(默认)。
详细地说,有两个模型通过 belongsTo 关系链接(参加者属于锦标赛) 第一个涵盖体育赛事的 parent 模型 (field.yaml):
tournament:
# ... some other fields
start_date:
label: Start date
type: date
attendees:
label: Attendees
type: partial
第 2 个 child 模型与会者:
attendee:
name:
label: Name
type: text
start_date:
label: Start date
type: date
# how to get the value from tournament->start_date as preset?
parent 表格(在体育比赛中)有开始日期以及相关的部分涵盖参加比赛的运动员。每个运动员还有一个单独的开始日期字段,我想在 parent 锦标赛表格调用此表格后立即预先填写比赛的开始日期。但它必须是可编辑的,因为并非所有与会者都会在同一天开始。
有一个内置函数可以使用相同表单的另一个字段的值来预设一个字段,但不幸的是我找不到如何从 parent 表单中获取值的解决方案。
提前致谢!
您可以将 relationExtendManageWidget
方法添加到 Tournament controller
中并扩展其行为。您现在可以 inject initial values for your new modal
创建新记录。
// ..code
class Tournament extends Controller
{
// ..code
public function __construct()
{
// ..code
}
public function relationExtendManageWidget($widget, $field, $model)
{
// make sure we are doing on correct relation
// also make sure our context is create so we only copy name on create
if($field === 'attendees'
&& property_exists($widget->config, 'context')
&& $widget->config->context === 'create'
) {
$widget->config->model->start_date = $model->start_date;
// this is attendee ^ model ^ this is main tournament model
}
}
}
Now when your try to create a new
attendee record
from yourTournament record
, your attendee'sstart_date
will be pre-filled based on your tournament'sstart_date
and it only happens on creating new records.
如有疑问请评论。