我有一个用Symfony2 FormBuilder构建的表单。
某些字段定义为:
$builder->add('dateField','datetime',array('widget'=>'singletext'))
当我使用angular to $ http.post返回内容时,字段中的值以下列格式返回:
"2015-07-31T23:00:00.000Z"
该字段给我一个无效的值错误。
任何人都可以建议如何使这项工作?
答案 0 :(得分:0)
我有几乎相同的问题,除了我使用的日期字段附带一个选项输入的小部件,分别为日,月和年。 我使用bootstrapui为花式角度datepicker。 Symfony的表单帖子是一个多数组,看起来类似于: form_name [field_name] [day],form_name [field_name] [month],form_name [field_name] [year]其中表单名称来自类型的getName函数。 基本上你必须将角度的日期转换为这种格式:
//java script
var expiration = $filter('date')($scope.datePicker, 'yyyy/M/d').split('/');
$scope.data['form_name[expiration][month]'] = expiration[1];
$scope.data['form_name[expiration][day]'] = expiration[2];
$scope.data['form_name[expiration][year]'] = expiration[0];
//form type
public function buildForm(FormBuilderInterface $builder, array $options) {
parent::buildForm($builder, $options);
$builder
->add('expiration', 'date')
->add('save','submit');
}
public function getName() {
return 'form_name';
}
在javascript $ scope.datePicker中绑定到选择器的ng模型(存储日期对象angular created)和$ filter是注入控制器的角度服务。然后你可以发布它:
$http.post($scope.formUrl, $.param($scope.data), {headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}})
.then(function (response) {
//called async if form is valid
}, function (response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
答案 1 :(得分:0)
我得到了相同的概率,我使用了datetimetype
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
比我在postAction中添加的
$date = new \DateTime( $request->request->get("date") );
$entity->setDate($date)
最后,以我的角度形式一个简单的input type="date"
(日期是日期时间顺便说一句)
/**
* @var \DateTime
*
* @ORM\Column(name="date", type="datetime", nullable=true)
*/
private $date;