i.a*_*iel 47 php symfony symfony-2.1
我有一个包含几个字段的表单.其中之一是Datetime字段.如何定义该字段的默认值?
我已经尝试在相关实体,控制器,构造函数和__construct中设置一个值:
$myEntity = new MyEntity();
$myEntity->setMyDate(new \DateTime());
$form = $this->createForm(new AddMyEntity(), $myEntity);
Run Code Online (Sandbox Code Playgroud)
不工作.
试图$data在buildForm中定义变量:
$builder->add('myDate', 'date', array(
'format' => \IntlDateFormatter::SHORT,
'input' => 'datetime',
'widget' => 'single_text',
'data' => new \DateTime("now"));
Run Code Online (Sandbox Code Playgroud)
也不工作.任何想法,Symfony2社区?
编辑:根据要求添加实体.
/**
* @ORM\Column(name="myDate", type="datetime")
* @Assert\NotBlank()
*/
private $myDate;
Run Code Online (Sandbox Code Playgroud)
Eln*_*mov 66
在实体构造函数中设置它:
class Entity
{
/**
* @var \DateTime
*/
private $date;
public function __construct()
{
$this->date = new \DateTime();
}
}
Run Code Online (Sandbox Code Playgroud)
Ada*_*ney 30
Elnur的答案是正确的,也许是推荐的答案.但是为了完整性,在表单中设置日期窗口小部件的默认值的另一种方法是使用dataDateTime实例在options数组参数中指定键.
$builder->add('myDate', 'date', array(
'data' => new \DateTime()
));
Run Code Online (Sandbox Code Playgroud)
注意:这将覆盖每次编辑时先前设置的日期时间.
此解决方案不需要修改您的实体对象.
$builder->add('myDate', DateTimeType::class, [
'label' => 'My Date',
'required' => false,
'date_widget' => 'single_text',
'time_widget' => 'single_text',
'date_format' => 'dd/MM/yyyy'
]);
$builder->get('myDate')->addModelTransformer(new CallbackTransformer(
function ($value) {
if(!$value) {
return new \DateTime('now +1 month');
}
return $value;
},
function ($value) {
return $value;
}
));
Run Code Online (Sandbox Code Playgroud)
此解决方案仅将此行为应用于此表单,它不会将此行为与实体本身相关联.您可能有几种形式可以修改具有不同所需行为的实体.有些需要默认日期,有些则不需要.
| 归档时间: |
|
| 查看次数: |
83750 次 |
| 最近记录: |