mar*_*ila -1 php arrays oop formbuilder symfony
我正在尝试减少一些代码,以使其看起来更干净:
if($target == "edit"){
$formBuilder->add('getTimestamp', DateType::class, array(
'widget' => 'single_text',
'format' => 'dd.MM.yyyy',
'html5' => false,
'attr' => array('class' => 'js-date form-control', 'style' => 'line-height: 20px;'), 'label' => $field['fieldName'],
));
} else {
$formBuilder->add('getTimestamp', DateType::class, array(
'widget' => 'single_text',
'data' => new \DateTime(),
'format' => 'dd.MM.yyyy',
'html5' => false,
'attr' => array('class' => 'js-date form-control', 'style' => 'line-height: 20px;'), 'label' => $field['fieldName'],
));
}
Run Code Online (Sandbox Code Playgroud)
这是我的方法:
if($target == "edit"){
$newdate = ['data' => new \DateTime()];
}
$formBuilder->add('getTimestamp', DateType::class, array(
'widget' => 'single_text',
$newdate,
'format' => 'dd.MM.yyyy',
'html5' => false,
'attr' => array('class' => 'js-date form-control', 'style' => 'line-height: 20px;'), 'label' => $field['fieldName'],
));
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试减少代码时,未在我的字段中创建日期。
尝试不同的方法。修改并将选项作为数组传递。
$options = [
'widget' => 'single_text',
'format' => 'dd.MM.yyyy',
'html5' => false,
'attr' => ['class' => 'js-date form-control', 'style' => 'line-height: 20px;'], 'label' => $field['fieldName'],
];
if ($target == 'edit') {
$options['data'] = new \DateTime();
}
$formBuilder->add('getTimestamp', DateType::class, $options);
Run Code Online (Sandbox Code Playgroud)