2016-06-21 8 views
1

後、私はあなたが(他の中で)を選択することができます注文を行うためのフォームを持っている:DATETYPEフィールド - 日を選択することしかでき、今日

  • 日付takout
  • 時間のテイクアウト

それ次のようになります。

enter image description here

私のための一部のコードを次のものが含まれ、mは、このようなものです:

$form = $this->createFormBuilder($order) 
    ->add('dateTakeout', DateType::class, array('label' => "Kies uw datum voor afhaling *", 'required' => true)) 
    ->add('hourTakeout', TimeType::class, array('label' => "Kies het gewenste uur van afhalen *", 'required' => true)); 

しかし、今、私はあなただけの唯一の深夜まで3 PMの間で、今日 + 翌日に選択できることをしたいと思います。

しかし、私はフォームでこれを予見する方法についての手がかりはありません。誰かが私の手伝いをすることができますか?

UPDATE:

私は私のドロップダウンリストのオプションの数を制限したいと思います。 2016年6月21日や午後1時のような日は選択できません。

+0

これらの時間を制限したり、範囲内にあるかどうかを検証したりしますか?これらの2つの選択肢は異なるアプローチです。アプローチと受け入れ可能なもの –

+0

@AlvinBunk、私は可能性を制限したいと思います.2016年6月21日や午後1時のような日は選択できません。 – nielsv

答えて

1

あなたがこれを行うことができますいくつかの方法があります:

あなたは現在の日付を取得することができ、日付が未来にあるならば、上記のあなたのコントローラのように(のは、7月1日にしましょう)を参照してください。次に、Flashbagメッセージを作成して、Flash twigテンプレートにリダイレクトします。

時には、時間(分)が指定した時間範囲内にあることを確認する場合と同じことを行うこともできます。そうでない場合は、フラッシュエラーメッセージを作成してtwigにリダイレクトします。

代替オプション(難しくありますが、潜在的にもっと多くのコード)は、日付時刻オブジェクトであるエンティティに基づいてフォームクラスを作成することです。理想的には、両方の日付を含む1つのエンティティ&時間。私はあなたにこれについての提案をすることはできませんが、私はこれを試していません。私はこれが可能でなければならないことを知っています。

Forms Classes are explained in this link

私はこれが質問に答えることを望みますか?

編集#2。 は、あなたの質問の上に第2の時間に行くの後、私はあなたがTimeType ::クラスのフィールドでこれを行うことができます参照してください。これは、午後3時から、あなたの選択の時間を制限

->add('hourTakeout', TimeType::class, array(
     'label' => "Kies het gewenste uur van afhalen *", 
     'required' => true, 
     'widget' => 'choice', 
     'hours' => range(15,23), 
     )); 

- 午後11時を(私は範囲を使用して24時間形式で入れ

+0

Didこれはあなたをまったく助けますか? –

関連する問題