маршрут Symfony, кажется, работает с GET, но не POST - PullRequest
1 голос
/ 13 мая 2011

У меня есть страница, URI которой /importBundle/96/iTunes, где 96 - идентификатор пакета импорта.Когда я перехожу на эту страницу в браузере, она работает просто отлично.Тем не менее, когда я отправляю форму (которая отправляется прямо на ту же страницу), я получаю «Действие» importBundle / 96 «не существует», что является абсолютно верным, но это не то, что я говорю, чтобы идти.Когда я получаю эту ошибку, я все еще вижу /importBundle/96/iTunes в адресной строке.

Есть идеи, почему это так?

(я на Symfony 1.4.)

Редактировать : вот что у меня есть в моем routing.yml:

import_bundle:
  class: sfDoctrineRouteCollection
  options:
    model:                ImportBundle
    module:               importBundle
    prefix_path:          /importBundle
    column:               id
    with_wildcard_routes: true

А вот мой открывающий тег <form>:

<form action="<?php echo url_for('importBundle/iTunes?id='.$import_bundle->getId()) ?>" method="post" enctype="multipart/form-data">

Edit 2 : вот как я пытался добавить sf_method:

import_bundle:
  class: sfDoctrineRouteCollection
  options:
    model:                ImportBundle
    module:               importBundle
    prefix_path:          /importBundle
    column:               id
    with_wildcard_routes: true
  requirements:
    sf_method: [get,post]

Не работает.Я сделал это неправильно?То, как я это сделал, похоже на документы , так что я в замешательстве.

Ответы [ 3 ]

1 голос
/ 13 мая 2011

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

import_bundle_itunes:
  class:   sfDoctrineRoute
  url:     /iTunes/:id
  options: { model: ImportBundle, type: object }
  param:   { module: importBundle, action: iTunes }
  requirements:
    id: \d+
    sf_method: [get,post]
0 голосов
/ 14 ноября 2011
0 голосов
/ 13 мая 2011

Вы, вероятно, отправляете форму с методом post, а рассматриваемый маршрут настроен только для метода get. Затем Symfony возвращается к маршруту по умолчанию /: module /: action / * и, очевидно, не может найти «importBundle / 96».

Если вы публикуете на одной и той же странице, то URL должен быть настроен как для получения, так и для отправки.

url_name:
  requirements:
    sf_method: [get,post]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...