0

IRC の Stof のおかげで、答えがわかりました。誰かが同じ問題に遭遇した場合に備えて、共有したかっただけです。

問題

フィールドタイプが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() の呼び出し

4

3 に答える 3

2

解決策は

このテストを試す

<?php

$formatter = new \IntlDateFormatter();

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

null が表示された場合は、php / intl のバージョンにバグがあり、アップグレードする必要があることを意味します。

私の場合、PHP 5.3.8 を搭載した Windows 7 64 ビット マシン、Wampserver2 を実行していました。

PHP 5.3.10 以降にアップグレードするとうまくいきました。

また、あなたが得ている場合:

(..path..)\StubIntlDateFormatter::setLenient() は実装されていません。完全なローカリゼーション機能を利用するには、「intl」拡張機能をインストールしてください。

Symfony 2.0.16 にアップグレードします。

乾杯、もう一度、TYVM Stof!

于 2012-07-15T12:04:16.887 に答える
1

私は2つの構成を持っており、それぞれが異なるアプリケーションを持っています:ベンダーとの圧縮

最初の構成でエラーが発生しました:

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

2 番目の構成では、次のエラーが発生しました。

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 エクステンションの修正

両方のアプリケーションの問題を修正しました。

PHP DLL の 64 ビット コンパイル バージョンを提供してくれた Anindya に感謝します。他の 64 ビット バージョンは見つかりませんでした。(私が見た限りでは(Beyond Compare を使用してバージョンを比較しました)、私が持っている Wamp2 バージョンに含まれていたのは彼の 5.3.8 64 ビット スレッドセーフ バージョンでした;)

よろしく、クリストフ

于 2012-08-09T18:05:51.557 に答える
0

これは、php.ini に正しいパラメータがない場合に発生します... php.ini のタイム ゾーンが「Europe/Brussels」(大文字と小文字を区別) として正しく設定されているかどうかを確認してください。

于 2014-03-17T14:09:08.193 に答える