2012-07-15 69 views
0

感謝Sto on IRC我知道現在的答案。我只是想分享它,以防有人絆倒同樣的問題。Symfony2日期表單類型:致命錯誤:調用非對象上的成員函數setLenient()

問題

當你有字段類型日期時間:

/** 
* @ORM\Column(type="datetime", name="released_at") 
*/ 
protected $released_at; 

和表單類型使用日期格式類型:

$builder 
     ->add('released_at', 'date', array(
      'widget' => 'single_text', 
      'format' => 'yyyy-MM-dd', 
    )); 

和你收到此錯誤:

Fatal error: Call to a member function setLenient() on a non-object in (...)\vendor\symfony\src\Symfony\Component\Form\Extension\Core\Type\DateType.php on line 64

回答

2

解決方法是

試試這個測試

<?php 

$formatter = new \IntlDateFormatter(); 

if($formatter === null) 
    echo 'null!'; 
else 
    echo 'else'; 

如果你得到空,這意味着你的PHP /國際版本的車和你需要升級。

在我的情況下,我運行@ Windows 7 64位計算機,Wampserver2與PHP 5.3.8。

升級到PHP 5.3.10或更高的伎倆。

此外,如果你得到:

(..path ..)\ StubIntlDateFormatter :: setLenient()未實現。請安裝'intl'擴展程序以獲取完整的本地化功能。

升級到Symfony 2.0.16。

乾杯,再次,TYVM Stof!

1

我有兩種配置,每一個不同的應用: - Windows 7的64位機,採用作曲家 安裝Wampserver2與PHP 5.3.8與Symfony的2.0.15 - Windows 7的64位計算機,Wampserver2用PHP 5.3.8與從拉鍊安裝與供應商

在第一配置Symfony的2.1-RC1我有錯誤:

Fatal error: Call to a member function format() on a non-object in C:\MyProject\vendor\symfony\src\Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToLocalizedStringTransformer.php on line 97 

在第二構型,我有錯誤:

Fatal error: Call to a member function setLenient() on a non-object in C:\MyProjectSf2.1\vendor\symfony\symfony\src\Symfony\Component\Form\Extension\Core\Type\DateType.php on line 81 

我在WAMP2安裝使用在以下地方提供的文件從升級5.3.8 PHP只到5.3.13: http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/ PHP 5.3.13(線程安全)+固定捲曲擴展

,它解決了這兩個應用程序的問題!

非常感謝Anindya爲他提供的64位PHP DLL編譯版本所做的努力,我沒有在其他地方找到其他64位版本! (據我所見(我使用Beyond Compare比較了這個版本),這是他的5.3。8個64位線程列入Wamp2版本我都有安全版本;)

最好的問候, 克里斯托夫

0

出現這種情況,如果你沒有在php.ini正確parameteres ...檢查,如果你有一個正確配置您的php.ini中的時區爲「歐洲/布魯塞爾」(區分大小寫)

相關問題