У меня есть простая конечная точка API, настроенная следующим образом:
/**
*
* @QueryParam(name="originLat", requirements="\d+", strict=true, nullable=false)
* @QueryParam(name="originLng", strict=true, nullable=false)
* @QueryParam(name="departureTime", requirements="/\d{4}-[01]\d-[0-3]\d [0-2]\d:[0-5]\d:[0-5]\d/", strict=true, nullable=false)
*
* @param ParamFetcher $paramFetcher
*/
public function getWalkingJourney(ParamFetcher $paramFetcher)
{
$dTime = $paramFetcher->get('departureTime');
$oLat = $paramFetcher->get('originLat');
$oLng = $paramFetcher->get('originLng'),
}
[QueryParam] [1] для originLat отлично работает, если я передаю простое число, но более сложное регулярное выражение DelayTime всегда терпит неудачу со следующим сообщением:
Parameter "departureTime" of value "2016-09-13 14:47:36" violated a constraint "Parameter 'departureTime' value, does not match requirements '/\d{4}-[01]\d-[0-3]\d [0-2]\d:[0-5]\d:[0-5]\d/'"
Что кажется нелогичным, так как это правильное регулярное выражение.
Я что-то здесь не так делаю?
Вы добавляете PCRE разделители в requirements
, что, вероятно, испортит ваше регулярное выражение.
Попробуй как * @QueryParam(name="departureTime", requirements="\d{4}-[01]\d-[0-3]\d [0-2]\d:[0-5]\d:[0-5]\d", strict=true, nullable=false)
Проблема здесь была космической проблемой. Аннотации плохо обрабатывают пробелы, поэтому, когда пространство в регулярном выражении было заменено на \ s, все работает нормально.
Не работает
* @QueryParam(name="departureTime", requirements="\d{4}-[01]\d-[0-3]\d [0-2]\d:[0-5]\d:[0-5]\d", strict=true, nullable=false) *
Работает
* @QueryParam(name="departureTime", requirements="\d{4}-[01]\d-[0-3]\d\s[0-2]\d:[0-5]\d:[0-5]\d", strict=true, nullable=false) *