Угловая отправленная строка даты в поле DateTime формы Symfony2. Неверное значение

У меня есть форма, созданная с помощью Symfony2 FormBuilder.

Некоторые из полей определены как:

$builder->add('dateField','datetime',array('widget'=>'singletext'))

Когда я использую angular для $ http.post обратно содержимое, значение из поля возвращается в формате:

"2015-07-31T23:00:00.000Z"

И поле дает мне недопустимое значение err.

Кто-нибудь может посоветовать, как сделать эту работу?

1

Решение

У меня была почти та же проблема, за исключением того, что я использовал поле даты, которое поставляется с виджетом опции, вводимой отдельно для дня, месяца и года.
Я использовал bootstrapui для необычного углового указателя даты.
Пост формы Symfony является множественным массивом, выглядит примерно так:
имя-формы [имя-поля] [день], имя-формы [имя-поля] [месяц], имя-формы [имя-поля] [год], где имя формы происходит из функции 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, привязанная к средству выбора (в котором хранится объект даты, создаваемый под углом), а $ 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.
});
0

Другие решения

Я получаю ту же проблему, я использовал datetimetype

use Symfony\Component\Form\Extension\Core\Type\DateTimeType;

чем в моем посте я добавил

$date = new \DateTime( $request->request->get("date") );
$entity->setDate($date)

И наконец, в моей угловой форме простой input type="date"

(Между прочим, DateTime)


/**
* @var \DateTime
*
* @ORM\Column(name="date", type="datetime", nullable=true)
*/
private $date;

0

По вопросам рекламы [email protected]