2015-08-15 54 views
1

我有一個用Symfony2 FormBuilder構建的表單。Angular將日期字符串發佈到Symfony2 Form DateTime字段中。無效值

有些字段的定義爲:

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

當我使用的角度來$ http.post回從字段中的值回來格式內容:

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

而且該字段給我一個無效的值err。

任何人都可以建議如何使這項工作?

+0

嘗試設置ISO8601格式手動:http://symfony.com/doc/current/reference/forms/types/date.html#reference-forms-類型日期格式。並注意,該文檔稱它是'single_text',而不是'singletext'。 – kozlice

回答

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-模型(存儲Date對象的角度將創建)和$過濾器是角服務注入到控制器。然後,你可以將它張貼:

$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;

比我postAction我加入

$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;

相關問題