1

私は少し問題があります、そして私は本当に理由がわかりません。| date()を使用してtwigで日時変数を出力していますが、常に実際の時刻を出力しています。

デバッグ用に、次のコードをテンプレートに追加しました。

<pre>
{% debug entity.getCreatedAt|date("d.m.Y H:i:s") %}
{% debug entity.getCreatedAt|raw %}
{% debug entity.CreatedAt|raw %}
{% debug entity.CreatedAt|date("d.m.Y H:i:s") %}

私の変数はCreatedAtと呼ばれているので、通常はentity.CreatedAt | date( "dmY H:i:s")で正しい出力を取得する必要があります。

私のデバッグ出力は次のとおりです。

string '16.01.2013 13:46:03' (length=19) //entity.getCreatedAt|date("d.m.Y H:i:s")

object(DateTime)[4611] //entity.getCreatedAt|raw
 public 'date' => string '2013-01-16 13:46:03' (length=19)
 public 'timezone_type' => int 3
 public 'timezone' => string 'Europe/Berlin' (length=13)

object(DateTime)[4938] //entity.CreatedAt|raw
 public 'date' => string '2013-02-20 21:46:53' (length=19)
 public 'timezone_type' => int 3
 public 'timezone' => string 'Europe/Berlin' (length=13)

string '20.02.2013 21:46:53' (length=19) //entity.CreatedAt|date("d.m.Y H:i:s")

CreatedAtを呼び出すとすぐにNULLになる理由がわかりません。そして、デバッグタグの外側では、書き込みに依存せず、常にNULLです。

私のエンティティには次のものがあります。

private $CreatedAt;

public function setCreatedAt($createdAt)
{
    $this->CreatedAt = $createdAt;

    return $this;
}

public function getCreatedAt()
{
    return $this->CreatedAt;
}

そして、YMLには次のものがあります。

CreatedAt:
  type: datetime
  nullable: true

誰かが間違いを見ますか?私は本当にそれを見つけません、多分それはバグですか?

ありがとう

4

2 に答える 2

4

エンティティクラスの外部でプライベート変数にアクセスする場合は、パブリックゲッターメソッドを呼び出す必要があります(これがここでの目的です)。$CreatedAtgetCreatedAt()

また、Twigテンプレートで、を呼び出す{% debug entity.CreatedAt|date("d.m.Y H:i:s") %}と、entity.CreatedAtisNULLであるため、返される文字列は新しい日付オブジェクトに基づいています。

日付フィルターに渡された値がnullの場合、デフォルトで現在の日付が返されます。

http://twig.sensiolabs.org/doc/filters/date.html

アップデート:

@insertusernamehereで述べられているように、twigは自動的にパブリックゲッターを呼び出します。
ただし、この動作は、{{ }}以上の区切り文字を使用した場合にのみ発生するよう{% %}です。

http://twig.sensiolabs.org/doc/templates.html#synopsis

于 2013-02-20T20:37:44.313 に答える
2

PHPでは、メンバー関数は大文字と小文字を区別せず、クラスメンバーは大文字と小文字を区別します。したがってgetCreatedAt、と同じように機能しますgetcreatedatが、CreatedAtとは異なりcreatedatます。

これに関する詳細情報は次のとおりです。PHPの関数とメソッドで大文字と小文字が区別されないのはなぜですか。

于 2013-02-20T20:41:14.003 に答える