感谢 IRC 上的 Stof,我现在知道答案了。我只是想分享它,以防有人偶然发现同样的问题。
问题所在
当您具有字段类型日期时间时:
/**
* @ORM'Column(type="datetime", name="released_at")
*/
protected $released_at;
在表单类型中,您使用日期表单类型:
$builder
->add('released_at', 'date', array(
'widget' => 'single_text',
'format' => 'yyyy-MM-dd',
));
您收到此错误:
致命错误:在 (...( 中的非对象上调用成员函数 setLenient((''vendor''symfony''src''Symfony''Component''Form''Extension''Core''Type''DateType.php 在第 64 行
解决方案是
试试这个测试
<?php
$formatter = new 'IntlDateFormatter();
if($formatter === null)
echo 'null!';
else
echo 'else';
如果你得到空,这意味着你的php/intl版本有问题,你需要升级。
就我而言,我正在运行@ Windows 7 64位机器,Wampserver2与PHP 5.3.8。
升级到 PHP 5.3.10 或更高版本可以解决问题。
另外,如果您得到:
(..路径..(''StubIntlDateFormatter::setLenient(( 未实现。请安装"intl"扩展以获得完整的本地化功能。
升级到 Symfony 2.0.16。
干杯,再一次,TYVM Stof!
我有两种配置,每种配置都有不同的应用程序:- Windows 7 64位机器,Wampserver2与PHP 5.3.8与Symfony 2.0.15安装使用作曲家- Windows 7 64位机器,Wampserver2与PHP 5.3.8与Symfony 2.1-RC1从zip安装与供应商
在第一个配置中,我遇到了错误:
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努力提供PHP DLL的64位编译版本,我没有在其他任何地方找到其他64位版本!(据我所知(我使用 Beyond Compare 比较了版本(,这是我;) Wamp2 版本中包含的 5.3.8 64 位线程安全版本
此致敬意克里斯托夫
如果你的 php 中没有正确的参数,就会发生这种情况.ini...检查您的 php 中时区配置是否正确.ini为"欧洲/布鲁塞尔"(区分大小写(