2016-04-02 37 views
4

我的Symfony 2.8Symfony2中:如何爲現場的DateTime

我有一個名爲工作表中設置默認值:「Docentes」有日期時間字段「fechaAlta」

我需要的默認值這個領域是「今天」當我添加一個新的記錄

我生成CRUD,使用命令generate:doctrine:crud

在文件「DocentesController.php」的Symfony創建兩個函數:「newAction」和「編itAction「(等等)。無論使用相同的形式,插入在文件夾中的「形式」的文件「DocentesType.php」:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 

     ->add('fechaAlta', 'date') 
     ->add('dni') 
     # 
    ; 
} 

我試過兩種解決方案:

之一:在命名的實體文件,「Docentes .PHP」我添加功能:

public function __construct() 
{ 
$this->fechaAlta = new \DateTime();  
} 

但是當我使用的形式來添加新的記錄,本場‘fechaAlta’顯示在值:01日,01月和2011年不與當前日期。

二:

我編輯的功能buildForm:

->add('fechaAlta', 'date', array(
       'data' => new \DateTime())) 
## 

現在,當我添加一個新的記錄,我又值獲得:01日,本月01和2011年,但是當我編輯一個記錄,Symfony改變我的原始值,例如2016-03-25並設置今天的值!所有我需要的相反!

+0

當我改變: ' - >添加(' fechaAlta」, '日',陣列( 'data'=> new \ DateTime()))'to' - > add('fechaAlta','date',array( 'data'=> new \ DateTime('now ')))'如果有新的記錄,我會獲得今天的日期,但在編輯記錄時仍然是問題。 –

+0

您是否100%確定您的服務器&php.ini中的日期/時間/時區設置是否正確?無論如何,你可以在'newAction'中調用'$ entity-> setFetchAlta(new \ DateTime());''我猜測? – ccKep

回答

1

,就應該替換:

public function __construct() 
{ 
$this->fechaAlta = new \DateTime();  
} 

通過

public function __construct() 
{ 
$this->fechaAlta = new \DateTime('now');  
} 
+2

參數肯定是可選的,請參閱php文檔中的[Example#2,3rd part](http://php.net/manual/en/datetime.construct.php)。 – ccKep

0

另一種選擇:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('fechaAlta', 'date', array(
      'empty_data' => new \DateTime('now), 
     )) 
     ->add('dni') 
    ; 
}