【问题标题】:Symfony2 date form type: Fatal error: Call to a member function setLenient() on a non-objectSymfony2 日期表单类型:致命错误:在非对象上调用成员函数 setLenient()
【发布时间】:2012-07-14 13:22:14
【问题描述】:

感谢 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',
      ));

你得到这个错误:

致命错误:在 (...)\vendor\symfony\src\Symfony\Component\Form\Extension\Core\Type\DateType.php 中的非对象上调用成员函数 setLenient() 第 64 行

【问题讨论】:

    标签: php windows forms symfony intl


    【解决方案1】:

    如果您的 php.ini 中没有正确的参数,则会发生这种情况...检查您的 php.ini 中的时区是否正确配置为“欧洲/布鲁塞尔”(区分大小写)

    【讨论】:

      【解决方案2】:

      我有两种配置,每种都有不同的应用程序: - Windows 7 64 位机器,带有 PHP 5.3.8 的 Wampserver2,使用 composer 安装 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(线程安全)+ 固定 curl 扩展

      它解决了两个应用程序的问题!

      非常感谢 Anindya 提供 64 位编译版本的 PHP DLL,我在其他任何地方都找不到其他 64 位版本! (据我所见(我使用 Beyond Compare 比较了版本),这是我拥有的 Wamp2 版本中包含的他的 5.3.8 64 位线程安全版本;)

      最好的问候, 克里斯托夫

      【讨论】:

        【解决方案3】:

        解决办法是

        试试这个测试

        <?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!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-25
          • 2012-05-30
          • 2016-08-30
          • 2015-02-06
          • 2012-05-14
          • 2013-11-19
          相关资源
          最近更新 更多