Основная проблема маршрутизации URL в Symfony2 - PullRequest
1 голос
/ 20 июля 2011

Я знаю, что мой вопрос очень ... прост и понятен, но я все равно задам его: надеюсь, что кто-то может дать мне подсказку.

Я переписываю PHP-приложение с использованием Symfony2. Мне нужно выполнить операции CRUD над объектами базы данных (которые имеют первичный ключ и два других поля, называемые field1 и field2)

В моем старом веб-приложении я вспоминал этот URL:

  http://myhost/updateProduct.php?id=foo&field1=value1&field2=value2

для вызова сценария updateProduct.php для обновления объекта, имеющего id = foo, значение1 для поля1 и значение2 для поля2.

Теперь я хочу использовать контроллер Symfony2 для этой работы ... Интересно, какую маршрутизацию я должен настроить для этого. Мой контроллер ProductController и в него встроен метод updateAction($id,$field1,$field2).

Я пытался что-то вроде (синтаксис yml):

myBundle_update:
    pattern:  /product/update/{id}/field1={value1}&field2={value2}
    defaults: { _controller: TestMyBundle:Product:update } 

но это не работает.

Итак, мой вопрос: я ошибаюсь в синтаксисе маршрутизации (и если да, то какой правильный)? Или мне чего-то не хватает, как правильно разделить параметры запроса на контроллеры?

Заранее спасибо

1 Ответ

3 голосов
/ 20 июля 2011

Возможно, вы хотите, чтобы ваш маршрут выглядел примерно так:

pattern:    /product/update/{id}/{value1}/{value2}

Таким образом просто вызовите / product / update / 1 / fieldValue1 / fieldValue2 для обновления продукта.

Я не уверен, но, возможно, у маршрутизации есть некоторые проблемы с вашим маршрутом, определяющим & в его маршруте.

Обновление: Ах, проблема скорее всего в том, что у вас нет / между вашими двумя значениями. Symfony2 использует регулярное выражение [^ /] + в качестве стандартного регулярного выражения для параметра.

http://symfony.com/doc/current/cookbook/routing/slash_in_parameter.html

...