是否可以在 Slim 中调用外部 js 文件中的路由
Is it possible to call a route in an external js file in Slim
在我的 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 引擎不需要 运行。
在我的 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>
然后使用
中的 urlUrl.myfundrequest
作为 JavaScript$.ajax({ url: Url.myfundrequest, ..
第二个选项会更高效,因为 twig 引擎不需要 运行。