2016-03-31 17 views
2

ブラウザのほとんどは、有効な入力タイプとしてdatetimedatetime-localのサポートを中止しています。この質問を書いている時点では、datetime-localのサポートは、​​(ほとんど存在しない)より多くのサポートがあります。symfonyフォームでdatetime-localの入力タイプをサポートする方法は?

symfonyのフォームビルダーを使用してフォームを構築する場合はdatetimeをサポートしますが、datetime-localはサポートしていません。では、symfonyフォームビルダーがdatetime-localの入力タイプを受け入れるようにし、入力タイプの残りの機能を同じにする方法はありますか?

答えて

3

この問題の解決方法の1つは、DateTimeTypeを上書きしてそれを使用して入力タイプのテキストをdatetime-localと変更することができる場合です。

<?php 

namespace AppBundle\Component\Form\Extension\Core\Type; 

use Symfony\Component\Form\FormInterface; 
use Symfony\Component\Form\FormView; 

class DateTimeType extends \Symfony\Component\Form\Extension\Core\Type\DateTimeType 
{ 
    /** 
    * {@inheritdoc} 
    */ 
    public function buildView(FormView $view, FormInterface $form, array $options) 
    { 
     $view->vars['widget'] = $options['widget']; 

     // Change the input to a HTML5 datetime input if 
     // * the widget is set to "single_text" 
     // * the format matches the one expected by HTML5 
     // * the html5 is set to true 
     if ($options['html5'] && 'single_text' === $options['widget'] && self::HTML5_FORMAT === $options['format']) { 
      $view->vars['type'] = 'datetime-local'; 
     } 
    } 

}