anonymous@RULINUX.NET~# Last login: 2024-12-26 17:21:10
Регистрация Вход Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск
[#] [Добавить метку] [Редактировать]
Скрыть

YAML и PCRE.

Субж. Поддерживает ли конфиг Symfony PCRE?

Из книги:

blog:

pattern: /blog/{page}

defaults: { _controller: AcmeBlogBundle:Blog:index, page: 1 }

requirements:

page: \d+

Так вот какой синтаксис РегЭкспов тут используется?

Tux-oid(*) (2012-05-05 18:53:50)

Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9

[Ответить на это сообщение]
[#] [Добавить метку] [Редактировать] Ответ на: YAML и PCRE. от Tux-oid 2012-05-05 18:53:50
avatar
Скрыть

Re:YAML и PCRE.

Судя по всему, да. В коде везде preg_match и все дела.

Вот тут они компилируют route, и создают обычный на вид регэксп self::REGEX_DELIMITER.'^'.$regexp.'$'.self::REGEX_DELIMITER.'s'.

А вот тут, кстати, пишут, что:

Don't forget to put Regexes with square brackets in quotes! If you forget them, the YAML parser for the routes will interpret them as an array expression.

SystemV(*)(2012-05-05 19:18:46)

Emacs-w3m/1.4.468 w3m/0.5.3
[#] [Добавить метку] [Редактировать] Ответ на: YAML и PCRE. от Tux-oid 2012-05-05 18:53:50
avatar
Скрыть

Re:YAML и PCRE.

Меня беспокоит твоё желание нахачить чего-то в роутинге. Неужели недостаточно стандартной документированной функциональности? Сегодня у них сделано как пишет SystemV, завтра они перехерачат этот функционал на что-нибудь другое, а твои регекспы утратят совместимость. Постарайся обойтись без наворотов!

anonymous(*)(2012-05-05 19:29:41)

[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от SystemV 2012-05-05 19:18:46
avatar
Скрыть

Re:YAML и PCRE.

Хм странно. Регулярка #([a-zA-Z0-9\_\-\/\.]{2,})$# При записи ее в параметр page: начинает ругаться при вводе УРЛ вида /blog/Test что не найден путь из $_GET.

Tux-oid(*)(2012-05-05 19:31:14)

Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от anonymous 2012-05-05 19:29:41
avatar
Скрыть

Re:YAML и PCRE.

А как-ты мне предлагаешь проверять URL на валидность допустим ввода имени пользователя. Сейчас это сделано так RewriteRule ^user_([a-zA-Z0-9\_\-\/\.]{2,})$ profile.php?user=$1 А тут как предлагаешь? К тому-же это заявленный функционал фреймворка и ниразу не хакинг.

Tux-oid(*)(2012-05-05 19:33:45)
Отредактировано Tux-oid по причине "не указана"
Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от anonymous 2012-05-05 19:29:41
avatar
Скрыть

Re:YAML и PCRE.

>Меня беспокоит твоё желание нахачить чего-то в роутинге. Неужели недостаточно стандартной документированной функциональности? Сегодня у них сделано как пишет SystemV, завтра они перехерачат этот функционал на что-нибудь другое, а твои регекспы утратят совместимость. Постарайся обойтись без наворотов!
Толстота. Это документированная функциональность же.

В пхп есть две реализации регэкспов (сторонние не рассматриваем) - Posix и PCRE. Второй используется почти повсеместно. А, так как для posix не нужны delimeters, которые они усердно расставляют, получается, что там внутри точно PCRE. И вряд ли они когда-нибудь перейдут на никому не нужный Posix.

SystemV(*)(2012-05-05 19:34:14)

Emacs-w3m/1.4.468 w3m/0.5.3
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от Tux-oid 2012-05-05 19:31:14
avatar
Скрыть

Re:YAML и PCRE.

>Хм странно. Регулярка #([a-zA-Z0-9\_\-\/\.]{2,})$# При записи ее в параметр page:
Видимо не надо ставить разделители в начале и конце, т.е. #. Я даже не уверен, что $ можно делать (но тут могу ошибаться).

А зачем тебе такой жуткий регэксп, кстати? а, понял.

SystemV(*)(2012-05-05 19:35:57)
Отредактировано SystemV по причине "не указана"
Emacs-w3m/1.4.468 w3m/0.5.3
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от Tux-oid 2012-05-05 19:33:45
avatar
Скрыть

Re:YAML и PCRE.

> А как-ты мне предлагаешь проверять URL на валидность допустим ввода имени пользователя

Предлагаю никак не проверять. Ты же всё равно будешь его потом по базе пробивать.

anonymous(*)(2012-05-05 19:36:25)
Отредактировано anonymous по причине "не указана"
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от SystemV 2012-05-05 19:35:57
avatar
Скрыть

Re:YAML и PCRE.

Если убираю # то вообще ругается на то что не может распарсить yml конфиг.

Tux-oid(*)(2012-05-05 19:40:57)

Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от Tux-oid 2012-05-05 19:33:45
avatar
Скрыть

Re:YAML и PCRE.

>RewriteRule ^user_([a-zA-Z0-9\_\-\/\.]{2,})$ profile.php?user=$1
Имхо,

url: /user_{name}
requirements:
name: "[A-Za-z0-9_/\.-]{2,}"

Впрочем, можно взять вообще "[\w_/\.-]+", наверное, ведь смысл проверки при роутинге всё же не в полной валидации, а в том, чтобы один урл на другой не наложился.

SystemV(*)(2012-05-05 19:41:18)

Emacs-w3m/1.4.468 w3m/0.5.3
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от SystemV 2012-05-05 19:34:14
avatar
Скрыть

Re:YAML и PCRE.

> Толстота. Это документированная функциональность же.
Была бы документированная - не было бы этого треда. В целом, функционала, описанного в Книге, достаточно для построения сайта. И не надо там усложнять ничего - ведь эти проверки же будут происходить при каждом обращении к сайту.

anonymous(*)(2012-05-05 19:43:48)

[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от anonymous 2012-05-05 19:36:25
avatar
Скрыть

Re:YAML и PCRE.

Ок. Как ты предлагаешь разрулить вариант

blog:

pattern: /user_{name}

defaults: { _controller: AcmeBlogBundle:Blog:index }

blog:

pattern: /user_{name}:edit

defaults: { _controller: AcmeBlogBundle:Blog:index }

без

requirements:

page: #([a-zA-Z0-9\_\-\/\.]{2,})$#

ибо зайдя по адресу /user_Tux-oid:edit В качестве имени пользователя получаем Tux-oid:edit?

Tux-oid(*)(2012-05-05 19:46:05)

Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от Tux-oid 2012-05-05 19:46:05
avatar
Скрыть

Re:YAML и PCRE.

Кстати, если поставить

pattern: /user_{name}:{action}

перед

pattern: /user_{name}

оно должно разрулить и без валидации, если в имени гарантированно нет ":". Если сверху вниз проверка идёт, как во всех фреймворках.

Ну или "[^:]+", как тупой вариант.

SystemV(*)(2012-05-05 19:49:45)

Emacs-w3m/1.4.468 w3m/0.5.3
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от Tux-oid 2012-05-05 19:46:05
avatar
Скрыть

Re:YAML и PCRE.

Если у тебя, как показано, один и тот же обработчик вызывается, то так:

text
blog:

pattern: /user_{name}/{action}

defaults: { _controller: AcmeBlogBundle:Blog:index, action:show }

 

И да, я сознательно заменил двоеточие слэшем. Ибо оно не нужно.

anonymous(*)(2012-05-05 19:50:11)
Отредактировано anonymous по причине "не указана"
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от SystemV 2012-05-05 19:49:45
avatar
Скрыть

Re:YAML и PCRE.

Бля. Я предвидел от ответ, но не от тебя а от анонима. А в случае когда много таких записей и они пересекаются?

Tux-oid(*)(2012-05-05 19:52:02)

Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от Tux-oid 2012-05-05 19:52:02
avatar
Скрыть

Re:YAML и PCRE.

>Бля. Я предвидел от ответ, но не от тебя а от анонима. А в случае когда много таких записей и они пересекаются?
Я с тобой не спорю о нужности валидации, я просто так, к слову:)

SystemV(*)(2012-05-05 19:52:45)

Emacs-w3m/1.4.468 w3m/0.5.3
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от SystemV 2012-05-05 19:49:45
avatar
Скрыть

Re:YAML и PCRE.

> если в имени гарантированно нет ":"
Незачем вносить всякие сомнительные "если" когда можно отказаться от использования двоеточия в УРЛе в качестве разделителя.

anonymous(*)(2012-05-05 19:52:49)

[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от Tux-oid 2012-05-05 19:52:02
avatar
Скрыть

Re:YAML и PCRE.

> А в случае когда много таких записей и они пересекаются?
Знаешь слово KISS?

anonymous(*)(2012-05-05 19:54:00)

[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от anonymous 2012-05-05 19:50:11
avatar
Скрыть

Re:YAML и PCRE.

И да, я сознательно заменил двоеточие слэшем. Ибо оно не нужно.

Не согласен. URL-ы должны остаться такими-же как сейчас. А обработчики таки разные.

Tux-oid(*)(2012-05-05 19:54:22)

Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от anonymous 2012-05-05 19:52:49
avatar
Скрыть

Re:YAML и PCRE.

>Незачем вносить всякие сомнительные "если" когда можно отказаться от использования двоеточия в УРЛе в качестве разделителя.
Есть текущие урлы, которых много. Если их менять при переписывании, то ссылки на сайте и в гугле работать перестанут. Наверное, лучше сохранить то, что есть.

SystemV(*)(2012-05-05 19:55:06)

Emacs-w3m/1.4.468 w3m/0.5.3
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от Tux-oid 2012-05-05 19:54:22
avatar
Скрыть

Re:YAML и PCRE.

> URL-ы должны остаться такими-же как сейчас.

Никому они ничего не должны. Никто не пострадает от того, что ты вместо :edit сделаешь /edit

> А обработчики таки разные.

Тогда так:

text
user_edit:
    pattern: /user_{name}/{action}
    defaults: { _controller: AcmeBlogBundle:Blog:user_edit_method}
    requirements:
        action:  edit
user_show:
    pattern: /user_{name}
    defaults: { _controller: AcmeBlogBundle:Blog:user_show_method}

 


anonymous(*)(2012-05-05 20:03:06)

[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от SystemV 2012-05-05 19:55:06
avatar
Скрыть

Re:YAML и PCRE.

> Есть текущие урлы

Где?? Поднимите мне веки!

> Если их менять при переписывании, то ссылки на сайте и в гугле работать перестанут. Наверное, лучше сохранить то, что есть.

Да, это будет серьёзная утрата, что ссылки из гугола на страницу редактирования профиля будут работать неправильно.

anonymous(*)(2012-05-05 20:05:43)

[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от Tux-oid 2012-05-05 19:40:57
avatar
Скрыть

Re:YAML и PCRE.

>Если убираю # то вообще ругается на то что не может распарсить yml конфиг.
В общем, проверил - работает вот так:


RulinuxEngineBundle:
    pattern:  /hello/{name}
    defaults: { _controller: RulinuxEngineBundle:Default:index }
    requirements:
      name: "[a-zA-Z0-9\_\-\/\.]{2,}$"
 


Наверное ты таки забыл кавычки, про которые я ссылку дал. Ну и круглые скобки не нужны.

SystemV(*)(2012-05-05 20:10:50)

Emacs-w3m/1.4.468 w3m/0.5.3
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от anonymous 2012-05-05 20:03:06
avatar
Скрыть

Re:YAML и PCRE.

Ну что-ж попробуем.

Tux-oid(*)(2012-05-05 20:11:39)

Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от anonymous 2012-05-05 20:05:43
avatar
Скрыть

Re:YAML и PCRE.

>Да, это будет серьёзная утрата, что ссылки из гугола на страницу редактирования профиля будут работать неправильно.
Кроме страницы редактирования ещё и другие ссылки бывают. Тогда надо определиться, какие остаются, какие - нет.

SystemV(*)(2012-05-05 20:11:55)

Emacs-w3m/1.4.468 w3m/0.5.3
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от SystemV 2012-05-05 20:11:55
avatar
Скрыть

Re:YAML и PCRE.

Я по-прежнему считаю что должны остаться все ссылки. Миша, обоснуй твое нежелание юзать : в УРЛах.

Tux-oid(*)(2012-05-05 20:14:10)
Отредактировано Tux-oid по причине "не указана"
Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от Tux-oid 2012-05-05 20:14:10
avatar
Скрыть

Re:YAML и PCRE.

Я считаю, что слеши как раделители движок разрулит сам и это будет более эффективно. По крайней мере из книги такое впечатление.

anonymous(*)(2012-05-05 20:16:49)

[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от SystemV 2012-05-05 20:11:55
avatar
Скрыть

Re:YAML и PCRE.

> Кроме страницы редактирования ещё и другие ссылки бывают. Тогда надо определиться, какие остаются, какие - нет.

Да, давай определимся - покажи какие ссылки необходимо оставить с двоеточиями и почему.

anonymous(*)(2012-05-05 20:17:55)

[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от anonymous 2012-05-05 20:16:49
avatar
Скрыть

Re:YAML и PCRE.

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

Tux-oid(*)(2012-05-05 20:19:30)
Отредактировано Tux-oid по причине "не указана"
Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от anonymous 2012-05-05 20:17:55
avatar
Скрыть

Re:YAML и PCRE.

Ты сперва приведи вескую причину их изменения.

Tux-oid(*)(2012-05-05 20:20:21)

Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9
[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от Tux-oid 2012-05-05 20:19:30
avatar
Скрыть

Re:YAML и PCRE.

Где ты это вычитал? Я про случай когда паттерн /blog/{slug} может быть распознан при обращении к /blog (обрати внимание, без слеша на конце) если для slug задано дефолтное значение. Мне кажется что с двоеточием это реализовать будет значительно сложнее.

anonymous(*)(2012-05-05 20:24:03)

[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от Tux-oid 2012-05-05 20:20:21
avatar
Скрыть

Re:YAML и PCRE.

> Ты сперва приведи вескую причину их изменения.
Причину я уже привёл. Если ты не считаешь её достаточно веской - ну сходи по граблям сам, я настаивать не буду.

anonymous(*)(2012-05-05 20:25:26)

[#] [Добавить метку] [Редактировать] Ответ на: Re:YAML и PCRE. от anonymous 2012-05-05 20:25:26
avatar
Скрыть

Re:YAML и PCRE.

Ок. Поступим по твоему. Мне не принципиально. Ибо урлов с : всего 2. Message_(.*):edit и user_(.*):edit Правда в обоих случаях контроллеры на message_(.*) и message_(.*):edit будут разными, так-что никаких тут граблей нет.

Tux-oid(*)(2012-05-05 20:32:21)
Отредактировано Tux-oid по причине "не указана"
Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9
Этот тред читают 2 пользователя:
Анонимных: 2
Зарегистрированных: 0




(c) 2010-2020 LOR-NG Developers Group
Powered by TimeMachine

Valid HTML 4.01 Transitional Правильный CSS!