Маршрутизация Symfony2: проблема с переносами строк - PullRequest
2 голосов
/ 20 сентября 2011

У меня есть шаблон маршрутизации, в котором последний параметр заполняется из многострочного поля ввода.Когда я вызываю маршрут без разрыва строки, все работает, но я получаю ошибку, когда у меня есть разрыв строки (который экранируется как% 0A):

No route found for "GET /update/1/complete/Kommentar%3Daa%0Abb%7C&quot

Определение маршрутизации:

_update:
    pattern:   /update/{id}/{column}/{newvalue}
    defaults: { _controller: MyBundle:Auftrag:update, newvalue: ' ' }    
    requirements:
        id:  \d+   
        newvalue: ".+"

Мое определение контроллера:

public function updateAction($id, $column, $newvalue) {
}

Ответы [ 2 ]

1 голос
/ 20 сентября 2011

Кажется, это ошибка в компиляторе маршрутов Symfony. Я открыл запрос pull в репозитории Symfony на github, давайте посмотрим, будет ли он принят ... тем временем вы можете решить эту проблему, изменив Component / Routing / RouteCompiler.php:

sprintf("#^\n%s$#x", $regex), // line 99

становится

sprintf("#^\n%s$#xm", $regex),
------------------^

Надеюсь, это поможет. Alberto

1 голос
/ 20 сентября 2011

вы должны знать, что в соответствии с идеей REST вы не инициируете изменение через GET. Для обновления вы должны использовать POST, например, и тогда ваша проблема с новой строкой будет решена.

Я также понял, что символы urlencoded будут интерпретироваться. Например, косая черта в кодировке urlencoded интерпретируется как разделитель пути. Не знаю почему, наверное, это связано с настройками сервера в конце дня. Так что решение будет где-то там.

Если вы настаиваете на том, чтобы использовать свой способ, вы можете заменить проблемные символы на комбинации ",", "-", "_". но это было бы просто взломать. вместо этого используйте POST для передаваемых данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...