如果您有字段类型datetime:
/**
* @ORM\Column(type="datetime", name="released_at")
*/
protected $released_at;
并在表单类型中使用日期表单类型:
$builder
->add('released_at', 'date', array(
'widget' => 'single_text',
'format' => 'yyyy-MM-dd',
));
并且您收到此错误:
致命错误:在第64行的(...)\ vendor \ symfony \ src \ Symfony \ Component \ Form \ Extension \ Core \ Type \ DateType.php中的非对象上调用成员函数setLenient()
答案 0 :(得分:2)
试试这个测试
<?php
$formatter = new \IntlDateFormatter();
if($formatter === null)
echo 'null!';
else
echo 'else';
如果你得到null,这意味着你的php / intl版本有问题,你需要升级。
在我的情况下,我运行的是@ Windows 7 64位机器,Wampserver2和PHP 5.3.8。
升级到PHP 5.3.10或更高版本就可以了。
如果你得到了:
(.. path ..)\ StubIntlDateFormatter :: setLenient()未实现。请安装“intl”扩展程序以获得完整的本地化功能。
升级到Symfony 2.0.16。
再次欢呼,TYVM Stof!
答案 1 :(得分:1)
我有两个配置,每个配置都有不同的应用程序: - 使用composer安装的Windows 7 64位计算机,带有PHP 5.3.8的Wampserver2和Symfony 2.0.15 - Windows 7 64位机器,带有PHP 5.3.8的Wampserver2,带有供应商的zip安装的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安装中仅将PHP从5.3.8升级到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的版本),这是我在Wamp2版本中包含的5.3.8 64位线程安全版本;)
祝你好运, 克里斯托夫