javascript - Slim中是否可以调用外部js文件中的路由

标签 javascript routes 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 文件上是不可能的,但是

我可以想到两个选择:

  1. 将 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');
        }
    }
    
  2. 将 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/

相关文章:

php - 从数据透视表中选择所有行

api - 使用 Backbone Js 和 SLIM 框架进行用户身份验证

php - 编码并从 mysql 数据库中提取

javascript - 为什么ajax请求时缓存不清晰?

javascript - 将数据加载到 React Native FlatList

haskell - 在 Happstack 路由过滤器中组合 GET 和 POST 部分

javascript - 在 D3.js 中迭代 geojson 并在满足条件时返回值

php - 读取路由函数中的 Blade 变量

node.js - 向 Fastify 发出 POST 请求时,JSON 未被解析以进行验证

laravel - 使用 Laravel 的 Eloquent ORM 在 Slim 中出现 null 错误时调用成员函数 connection()