Skip to content

Instantly share code, notes, and snippets.

@alexcarpenter
Forked from carlcs/axios.js
Created July 11, 2017 16:17

Revisions

  1. @carlcs carlcs created this gist Jul 11, 2017.
    17 changes: 17 additions & 0 deletions axios.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,17 @@
    import qs from 'qs';
    import Axios from 'axios';

    Axios.defaults.baseURL = Craft.baseUrl;
    Axios.defaults.headers.common['Accept'] = 'application/json';
    Axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
    Axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

    Axios.interceptors.request.use(config => {
    if (config.data === Object(config.data)) {
    config.data = qs.stringify(Object.assign({[Craft.csrfTokenName]: Craft.csrfToken}, config.data));
    }

    return config;
    });

    window.axios = Axios;
    33 changes: 33 additions & 0 deletions base.twig
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,33 @@
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <title>Axios with Craft</title>

    {% include '_includes/meta/index' %}

    <link rel="stylesheet" href="{{ craft.config.baseUrl ~ 'assets/app.css' }}">
    </head>

    <body>
    <div id="app">
    {% block layout %}
    {% endblock %}
    </div>

    {% set jsCraft = {
    baseUrl: craft.config.baseUrl,
    csrfTokenName: craft.config.csrfTokenName,
    csrfToken: craft.request.getCsrfToken,
    } %}

    <script type="text/javascript">
    window.Craft = {{ jsCraft|json_encode|raw }};
    </script>

    <script src="{{ craft.config.baseUrl ~ 'assets/app.js' }}"></script>
    </body>
    </html>