2016-01-05 39 views
0

我試圖用一個DateTime類型的Symfony:日期時間形式與類型RFC 3339字符串輸入

$builder->add('start_date', 'datetime', array(
     'widget' => 'single_text', 
     'input' => 'string' 
    )); 

我的表格日期格式爲RFC 3339

[start_date] => '2016-01-04T16:01:25+00:00' 

錯誤

The parsed date was invalid, The separation symbol could not be found, Unexpected data found., Unexpected data found., Unexpected data found., Unexpected data found., Unexpected data found., Data missing 

似乎日期時間類型只是期望日期爲格式爲2016-01-04 16:01:25的字符串,並且此格式不能從形式t YPE CONFIGS

https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php#L171

https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Form/Extension/Core/DataTransformer/DateTimeToStringTransformer.php#L68

想,如果這就是所期望的行爲或問題

兩個formatdate_format選項將在視圖中的數據工作,而比輸入數據。

堆棧跟蹤

at DateTimeToStringTransformer ->reverseTransform ('2016-01-04T16:01:25+0000') 
in vendor/symfony/symfony/src/Symfony/Component/Form/ReversedTransformer.php at line 46 + 
at ReversedTransformer ->transform ('2016-01-04T16:01:25+0000') 
in vendor/symfony/symfony/src/Symfony/Component/Form/Form.php at line 1087 + 
at Form ->modelToNorm ('2016-01-04T16:01:25+0000') 
in vendor/symfony/symfony/src/Symfony/Component/Form/Form.php at line 352 + 
at Form ->setData ('2016-01-04T16:01:25+0000') 
in vendor/symfony/symfony/src/Symfony/Component/Form/Extension/Core/DataMapper/PropertyPathMapper.php at line 57 + 
at PropertyPathMapper ->mapDataToForms (array('start_date' => '2016-01-04T16:01:25+0000')), object(RecursiveIteratorIterator)) 
in vendor/symfony/symfony/src/Symfony/Component/Form/Form.php at line 386 + 
at Form ->setData (array('start_date' => '2016-01-04T16:01:25+0000')) 
in vendor/symfony/symfony/src/Symfony/Component/Form/Form.php at line 478 + 
at Form ->initialize() 
in vendor/symfony/symfony/src/Symfony/Component/Form/FormBuilder.php at line 226 + 
at FormBuilder ->getForm() 
in vendor/symfony/symfony/src/Symfony/Component/Form/FormFactory.php at line 40 + 
at FormFactory ->create ('app_test_form', array('start_date' => '2016-01-04T16:01:25+0000')), 'items' => array()), array()) 
in vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php at line 282 + 
at Controller ->createForm ('app_test_form', array('start_date' => '2016-01-04T16:01:25+0000')), 'items' => array())) 
in src/AppBundle/Controller/DummyController.php at line 39 + 
+1

你有php5-國際擴展? –

+0

你真的嘗試'format'選項嗎?請注意,視圖數據既是向用戶顯示的數據,也是由用戶輸入的數據。如果您在API中使用表單,那麼視圖數據就是您的API使用者發送的數據。 – xabbuh

+0

@po_taka是的,我做了 – trrrrrrm

回答

0

看來你還需要添加格式

參考信息here

想,如果這就是所期望的行爲或問題

這似乎是行爲每個文檔,請line 140

// Change the input to a HTML5 date input if 
    // * the widget is set to "single_text" 

    // * the format matches the one expected by HTML5 

    // * the html5 is set to true 


add('start_date', 'date', array(
     'widget' => 'single_text', 
     'format' => 'c')) 

參考question

+0

這是'view'格式而不是'model'格式 – trrrrrrm

0
$builder->add('start_date', 'datetime', array(
     'widget' => 'single_text', 
     'input' => 'string', 
     'date_format' => 'yyyy-MM-dd HH:mm:ss' 
    )); 

試試這個,希望能幫助全給你

+0

'format'和'date_format'選項都適用於視圖數據而不是輸入數據。 – trrrrrrm