symfony: ошибка при вызове url_for () внутри тегов <script> - PullRequest
0 голосов
/ 11 августа 2011

Я вызываю url_for () внутри этих тегов javascript:

<script type="text/javascript">
    $.post('<?php echo url_for('category_set_representative_image',
array('sf_subject' => $category)) ?>',
           function(){

             alert("fadsf");
           }
    );

</script>

но я получаю эту ошибку:

sfError404Exception: Empty module and/or action after parsing the URL
'/rappresentativa' (/).

У меня также есть это правило маршрутизации:

category_set_representative_image:
  url:     /rappresentativa
  param:   { module: category_new, action: setRepresentativeImage }
  class:   sfDoctrineRoute
  options: { model: Category, type: object }

ПРИМЕЧАНИЕ: у меня нет проблем, если я вызываю тот же url_for () вдали от теги.

Есть идеи?

sf 1.4

Хави

Ответы [ 3 ]

2 голосов
/ 11 августа 2011

Ошибка, которую вы описали выше, не связана с тегами script.Неважно, где вы его используете (url_for).

Первый , я думаю, вам нужно использовать url_for(array('sf_route' => 'category_set_representative_image', 'sf_subject' => $category)) ИЛИ просто url_for('category_set_representative_image', $category)Первый полезен, когда вам нужно передать больше аргументов, чем просто объект. Подробнее

Второе (менее важно), возможно, вам нужно добавить больше параметров в ваш URL:

category_set_representative_image:
  url:     /rappresentativa/:id
  param:   { module: category_new, action: setRepresentativeImage }
  class:   sfDoctrineRoute
  options: { model: Category, type: object }
  requirements:
    id: \d+

Третье1020 *, проверьте, что модуль и действие действительно существуют:

// apps/<application>/category_new/actions.class.php
public function executeSetRepresentativeImage(sfWebrRequest $request) {
  $category = $this->getRoute()->getObject();

Надеюсь, это будет полезно.

0 голосов
/ 13 августа 2011

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

category_set_representative_image:
  url:     /rappresentativa
  param:  { module: category_new, action: setRepresentativeImage}
  class:   sfDoctrineRoute
  options: { model: Category, type: object }
  requirements: { sf_method: post }

РЕДАКТИРОВАТЬ : в любом случае также необходимо то, что говорит Антонкаляев:

category_set_representative_image:
  url:     /rappresentativa/:id
  param:  { module: category_new, action: setRepresentativeImage}
  class:   sfDoctrineRoute
  options: { model: Category, type: object }
  requirements: { sf_method: post }

1011 * Javi *

0 голосов
/ 12 августа 2011

Я думаю, что проблема просто связана с неправильным использованием кавычек между JavaScript и PHP.Попробуйте вот так:

<script type="text/javascript">
$.post('<?php echo url_for("category_set_representative_image",
array("sf_subject" => $category)) ?>',
       function(){

         alert("fadsf");
       }
);

...