2017-03-03 6 views
1

symfonyのRESTバンドルの@QueryParamアノテーション内に有効なDateTime文字列が必要ですか?Symfony RESTバンドル:QueryParamの必要条件に日付を追加する

私は今、これを持っている: @QueryParam(name="createdFrom", requirements="2016-05-18T12:00:00+0000")

私はvalid date timeフォーマットを表し、正規表現を使用したいと思います。

+0

正規表現で日付を真に検証することは、うるう年と無数の異なる可能性のある日付形式を考慮すると、不可能な作業です。 symfonyは分かりませんが、正規表現の代わりにあらかじめ定義されたデータフォーマットを要求する方法はありませんか? –

+1

あなたは正しいです:最善のアプローチは、文字列を要求し、 'DateTime(string)'を使って有効な日付を作成できるかどうかを確認することです。 – numediaweb

答えて

0

あなたはこの方法を行うことができます。

@QueryParam(name="createdFrom", nullable=false, requirements="(19|20)[0-9][0-9]-(0[0-9]|1[0-2])-(0[1-9]|([12][0-9]|3[01]))T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]?[+|-][0-9][0-9][0-9][0-9]") 

は正常に動作する必要があります。正規表現上記

このために働く:2016-05-18T12:00:00 + 0000

あなたは正規表現をテストするために使用することができます。このサイト:このサイトでhttp://www.regexpal.com/1966

は、正規表現のいくつかのサンプルを持っています日付:他http://www.regexlib.com/Search.aspx?k=datetime&c=0&m=0&ps=20&p=2

よろしく

0

/** 
* @Route("/blog/archive/{start}/{end}") 
* @ParamConverter("start", options={"format": "Y-m-d"}) 
* @ParamConverter("end", options={"format": "Y-m-d"}) 
*/ 
public function archiveAction(\DateTime $start, \DateTime $end) 
関連する問題