占位符在symfony的url_for()辅助函数中

时间:2011-02-25 15:43:35

标签: symfony1 routing helpers

我正在开发一个AJAXy自动完成小部件。我正在尝试使用占位符创建一个symfony URL,然后我可以将其传递给我的Javascript,以便JS可以注入它通过AJAX检索的记录的ID。例如:

$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 :(得分:0)

如果你只想传递一个参数,你可以使用url_for('person/edit?id='),然后用js附加动态参数。

<强>更新

另一种方法 - 如何用js替换%25

答案 1 :(得分:0)

主要问题是自动生成的操作正在使用$this->getRoute()->getObject(),但symfony无法将网址解析为sfDoctrineRoute,并且卡在sfRoute上,但没有有一个getObject()方法。我现在调整了我的操作以根据id参数检索记录,并开始使用url_for( 'person/edit' ),在JS中附加?id=123,类似于 Darmen 。我很满意。

答案 2 :(得分:0)

好问题! 这是我的解决方案(传递给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);
  });
}
相关问题