2016-01-11 3 views
1

Я пытаюсь соответствовать маршруты, где идентификаторы имеют ровно 6 номеровFW/1 шаблон соответствия N цифр

Это не работает:

variables.framework.routes = [ 
    { "main/{id:[0-9]{6}}" = "main/home/eid/:id"}, 
    { "main/home"     = "main/home"}, 
    { "*"       = "main/404"} 
    ]; 

Это делает:

variables.framework.routes = [ 
    { "main/{id:[0-9]+}" = "main/home/eid/:id"}, 
    { "main/home"     = "main/home"}, 
    { "*"       = "main/404"} 
    ]; 

Второй один из которых совпадает с любым количеством цифр. Интересно, нужно ли мне избегать {

ответ

3

Похоже, что FW/1 допускает ограниченный синтаксис регулярных выражений для объявления маршрутов. Поэтому я не думаю, что ваш первый пример будет работать. Из того, что я смог найти, 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 38 Я нашел некоторые дискуссии на эту тему и этот конкретный комментарий, описывающий запрашиваемое поведение - https://github.com/framework-one/fw1/issues/325#issuecomment-118572702

{заполнитель: регулярное выражение}, так что мы могли бы иметь продукт/{идентификатор: [0-9] +} -: name.html который задает product.detail? id = {id: [0-9] +} & name =: name.

  • Вам также необходимо повторить заполнитель с регулярным выражением в целевом маршруте (можно изменить).
  • Вы не можете поставить} в свое конкретное регулярное выражение.

Сообщите мне, если PR для этого дополнения приветствуется.

Обратите внимание, что вторая маркерная точка, в которой упоминается, что(скобка) не разрешено в регулярном выражении заполнителя.

Вот ссылка на код, на который ссылается этот тяговой-запрос, который был включен в 3,5 - https://github.com/framework-one/fw1/commit/9543b78552dbd27a526083ac72a3846bd86eeb90

А вот ссылка на обновленной документации для версии 3.5, где была добавлена ​​некоторая информация об этой функции - http://framework-one.github.io/documentation/developing-applications.html#url-routes

отрывок из этой док здесь:

заполнителя переменные в маршруте идентифицируются либо ведущей двоеточия или фигурные скобки (с указанием имени переменной и регулярное выражение, чтобы ограничить матчи) и может появиться в URL-адресе, например, { "/product/:id" = "/product/view/id/:id" } указывает соответствие для/product/something, которое будет обрабатываться так, как если бы URL был/product/view/id/something-section: product, item: view, query string id = something. Аналогично, { "/product/{id:[0-9]+}" = "/product/view/id/:id" } указывает соответствие для/product/42, которое будет обрабатываться так, как если бы URL был/product/view/id/42, и только числовые значения будут соответствовать заполнителю.

 Смежные вопросы

  • Нет связанных вопросов^_^