Symfony2 日期表单类型:致命错误:在非对象上调用成员函数 setLenient()


Symfony2 date form type: Fatal error: Call to a member function setLenient() on a non-object

感谢 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为"欧洲/布鲁塞尔"(区分大小写(