2016-12-26 4 views
4

今日の日付がデータベースから2つの日付の間にあるかどうか確認したいと思います。ここに私のコードです。今日がTwigの2つの日付の間にあるかどうかをチェックする方法は?

{% if today < room.price_start_date and today > room.price_end_date %} 
<a href="{{'/'|app}}/book/{{room.id}}"><button type="button" class="btn btn-default btn-xs">Book this room</button></a> 
{% else %} 
<a href="{{'/'|app}}/contact"><button type="button" class="btn btn-default btn-xs">Book this room</button></a> 
{% endif %} 

today変数は、このコードから値を取得します。

$todayDate = date('Y-m-d'); 
$this['today'] = date('Y-m-d', strtotime($todayDate)); 

price_start_dateprice_end_date私は、データベースからそれらを取得し、そのカラムのタイプがDate

かどうかを確認する方法任意のアイデアですtodayは、Twigのroom.price_start_dateroom.price_end_dateの間にありますか?

答えて

5

TWIGマニュアルによれば、date機能を使用できます。 引数が渡されない場合、関数はのを返します。

だからあなたのコードは、TWIGで次のようになります。

{% if date(room.price_start_date) < date() and date(room.price_end_date) > date() %} 
    {# condition met #} 
{% endif %} 
+2

を実際に私がもし日(room.price_start_date) '{%に比較記号を変更し、<日付()と日付(room.price_end_date)>日付()%} 'となりました。 多くのありがとうございます! –

+0

@AhmedEssam、ありがとう、あなたが正しいです、私は比較記号を正しい方法で更新しました。自由に回答を受け入れ、他の人にも役立つことを願ってください! – Farside

0

は、日付関数を試してみてください。 http://twig.sensiolabs.org/doc/functions/date.html

あなたはあなたのコードビットを変更する必要がある場合がありますので、私は最高に助言することはできません。

EDIT#2

申し訳ありませんが、私は小枝の日付関数のドキュメントに目を通す機会を持っていなかったが、それは@Yonelと@Farsideがやったことを良いことです。 @ヨネルのポイントは私が心配していたものであり、良い答えを与える時間がなかった。

あなたが\DateTimeを使用している場合、これはあなたのコードの変更次のようになります。

{% if date() < date(room.price_start_date) and date() > date(room.price_end_date) %} 
    <a href="{{'/'|app}}/book/{{room.id}}"> 
    <button type="button" class="btn btn-default btn-xs">Book this room</button></a> 
{% else %} 
    <a href="{{'/'|app}}/contact"> 
    <button type="button" class="btn btn-default btn-xs">Book this room</button></a> 
{% endif %} 

は、私があまりにも書式設定を改善しました。私はあなたがその時間枠内の部屋を予約することができることをちょうど確認していると推測します。そして、あなたのコードはよく見えます。

DEV環境で{{ dump(room.price_start_date) }}などを追加して、実際の日付がトラブルシューティング手法のように表示されるようにデバッグすることができます。

1

\DateTimeインスタンスを使用して、Twig(およびPHP)の日付を比較します。

どうしたのですか?

date('Y-m-d')機能は、フォーマットされた日付文字列を返します。だから、

、テンプレートを小枝やあなたの状態で直接date()小枝の機能を使用するために$today = new \DateTime('today');に変更し、このインスタンスを渡すようにする必要があります。

price_start_dateprice_end_date私はそれらをデータベースから取得し、その列の型は日付です。その後、あなたの小枝コードが正常に動作する必要があり、これらの2つ(room.price_start_dateroom.price_end_date)は\DateTimeのインスタンスであると仮定すると

関連する問題