【发布时间】:2015-02-20 19:27:43
【问题描述】:
对于初学者,我是 symfony2 的新手 -> 来自 Laravel 和 ZF1 我不得不承认这不是我所期望的。我在简单的任务上遇到了很多困难,到写这篇文章的那一刻,编辑仍然很痛苦。
所以场景:
我有一个包含 2 个日期时间字段的发票表单,我真的很讨厌生成的丑陋的 3 个选择字段,所以我包含了我的 jQuery 日期选择器。
由于日期时间的原因,我最初插入数据时需要创建输入类型为“文本”的表单:
$form=$this->createFormBuilder($invoice)
->add('date_ref','text', array(
'required'=> true))
->add('date_sent','text', array(
'required' => true ))
这样,丑陋的 3 select datepicker 不会显示,我的用户可以优雅地选择日期。
在编辑表单之前一切顺利:
我不知道为什么我没有像我最初希望的那样完成这项工作:
$invoice = $em->getRepository('AppBundle:Invoice')->find($id);
$form=$this->createFormBuilder($invoice)
->add('date_ref','text', array(
'required'=> true))
->add('date_sent','text', array(
'required' => true ))
->add('value','integer',array('required'=>true))
->add('nr_ref','text',array('required'=>true))
所以我想从一个具有他的属性但在视图中的实体创建一个表单
<div class="form-group">
{{ form_label(theForm.date_ref, 'Date Refferenced', { 'label_attr': {'class': 'control-label col-md-5'} }) }}
{{ form_errors(theForm.date_ref) }}
<div class="col-md-6">
{{ form_widget(theForm.date_ref,{'attr': {'class': 'form-control', 'data-provide':'datepicker'}}) }}
</div>
</div>
没有工作,所以我无法使用 date_ref 输入和“文本”值创建我的编辑表单作为我的第一个表单。
我搜索并发现从实体数据创建表单需要创建“类型”,因此我创建了“InvoiceType”
其中有:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('is_paid')
/* not working
->add('date_ref', 'date', array('input' => 'datetime',
'format' => date('y-M-d'),
'widget' => 'single_text'))
*/
->add('date_ref') //this is a datetime obj which results in those 5 selects
->add('date_sent')
->add('value')
->add('nr_ref')
->add('name_provider')
;
}
$invoice = $em->getRepository('AppBundle:Invoice')->find($id);
$form = $this->createForm(new InvoiceType(), $invoice);
但是因为这个方法从实体创建了一个表单,如果我从 buildForm() 函数中更改类型.. 我得到一个错误,他需要一个 Datetime 对象而不是字符串(“文本”)。
所以现在我坚持制作编辑表单 .. 这将是一种类型,1 个输入文本并使用 datepicker 预先填充数据库中的日期(类似于 2014/02/02),当您点击它,它应该出现在创建表单中。
就像我说我是新人一样,我学到了很多我通常在其他 MVC 中以其他方式完成的东西,我在这个 datetime Object 和 symfonys 3 select datetime 方面遇到了很多困难。
【问题讨论】:
-
我希望如果你正确地覆盖文档,你可以使用 datatime 字段,它现在可以呈现为文本类型,这是一个开始stackoverflow.com/a/15537698/853360
标签: php forms symfony datetime doctrine-orm