在我的 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');
我的问题是,如果我在公共(public)文件夹中创建外部 js 文件
是否可以在外部文件中实现 url: "{{ path_for('myfundrequest') }}
?
最佳答案
不,这在纯 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 中的 url$.ajax({ url: Url.myfundrequest, ..
第二个选项的性能会更高,因为 twig 引擎不需要运行。
关于javascript - Slim中是否可以调用外部js文件中的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45983350/