Заполнители в вспомогательной функции sylfony's url_for () - PullRequest
1 голос
/ 25 февраля 2011

Я работаю над виджетом автозаполнения AJAXy.Я пытаюсь создать URL-адрес Symfony с местозаполнителем, который затем могу передать своему Javascript, чтобы JS мог внедрить идентификатор записей, которые он получил через AJAX.Например:

$this->widgetSchema['sons_list'] = new ynWidgetAjaxAutocomplete(
  array(
    'item_url'        => url_for( 'person/edit?id=%' ),
    // OR 
    'item_url'        => url_for( 'person/%/edit' ),
  )
);

Но ни одна из этих работ - я ищу /person/%25/edit, но первая дает /person/edit/action?id=%25, а вторая - /person/%25/action.Это работает, если я передаю местозаполнитель цифр, но мне это кажется навязчивым хаком:

$this->widgetSchema['sons_list'] = new ynWidgetAjaxAutocomplete(
  array(
    'item_url'        => url_for( 'person/edit?id=999999999999' ),
  )
);

Кто-нибудь знает более чистый способ?Спасибо!

Ответы [ 3 ]

0 голосов
/ 25 февраля 2011

Основная проблема заключалась в том, что автоматически сгенерированное действие использовало $this->getRoute()->getObject(), но Symfony не смог разрешить URL-адрес до sfDoctrineRoute и застрял с sfRoute, который не имеет getObject() метод. Теперь я настроил свое действие для извлечения записи на основе параметра id и начал использовать url_for( 'person/edit' ), добавляя ?id=123 в JS, аналогично Дармен . Я доволен этим.

0 голосов
/ 27 февраля 2011

Хороший вопрос! Вот мое решение (перейдите по номеру URL и замените его на JS)

function preview_document(NODE, TREE_OBJ) {
  var url_to = '<?php echo url_for(sprintf('@document_preview?id=%s', '-999999'));?>';
  $.get(url_to.replace('-999999', $(NODE).attr('id').replace('phtml_', '')), function (data) {
    $('#document-viewer').html(data);
  });
}
0 голосов
/ 25 февраля 2011

Если вы хотите передать только один параметр, вы, вероятно, можете использовать url_for('person/edit?id='), а затем просто добавить динамический параметр с помощью js.

update

Другой способ -как насчет замены %25 на js?

...