在我的twig文件中,我正在调用一条通往我的ajax的路径
var fund = $('#fund');
//this will call php to populate fund drop-down
$.ajax({
url: "{{ path_for('myfundrequest') }}",
type: 'get',
dataType: 'json'
}).done(function (response) {
var len = response.length;
fund.empty();
for (var i = 0; i < len; i++) {
var fundNum = response[i][0];
var fundName = response[i][1];
fund.append("<option value='" + fundNum + "'>" + fundNum + ' -- ' + fundName + "</option>");
}
fund.prepend("<option value=''>- Select A Fund -</option>").val('');
}).fail(function (jqXHR, textStatus, error) {
console.log("getFund: " + error);
});
});
这是我的路线
$app->get('/fundrequest', 'PoEntryController:funds')->setName('myfundrequest');
我的问题是,如果我在公共文件夹中创建外部js文件
是否可以在外部文件中使这个工作url: "{{ path_for('myfundrequest') }}
?
答案 0 :(得分:1)
不,它不适用于普通的JavaScript文件,但
我可以想到两个选择:
将JavaScript文件添加为twig文件,然后在路径上使用twig进行渲染。
$app->get('/data/myScripts.js', 'ScriptProvider:myScript');
class ScriptProvider {
public function myScript($req, $res) {
return $this->view->render($res, 'data/myScript.js.twig');
}
}
将URL作为全局变量添加到全局对象
index.twig
<!-- [..] -->
<script>
Url = {
myfundrequest: "{{ path_for('myfundrequest') }}"
};
</script>
然后使用Url.myfundrequest
作为JavaScript中的网址
$.ajax({
url: Url.myfundrequest,
..
第二个选项会更高效,因为树枝引擎不需要运行。