简体   繁体   中英

How to overwrite Admin.js in Sonata Admin?

How to overwrite file Admin.js in Sonata Admin? I tried create this file in:

/app/Resources/SonataAdminBundle/public/Admin.js

but this not working.

In standard_layout.html.twig this file is included by:

        {% block sonata_javascript_pool %}
            {% for javascript in sonata_admin.adminPool.getOption('javascripts', []) %}
                <script src="{{ asset(javascript) }}"></script>
            {% endfor %}
        {% endblock %}

You can tweak the javascripts option:

app/console -vvv config:dump-reference sonata_admin
sonata_admin:
    …
    assets:
        …
        javascripts:

            # Defaults:
            - bundles/sonatacore/vendor/jquery/dist/jquery.min.js
            - bundles/sonataadmin/vendor/jquery.scrollTo/jquery.scrollTo.min.js
            - bundles/sonatacore/vendor/moment/min/moment.min.js
            - bundles/sonataadmin/vendor/jqueryui/ui/minified/jquery-ui.min.js
            - bundles/sonataadmin/vendor/jqueryui/ui/minified/i18n/jquery-ui-i18n.min.js
            - bundles/sonatacore/vendor/bootstrap/dist/js/bootstrap.min.js
            - bundles/sonatacore/vendor/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js
            - bundles/sonataadmin/vendor/jquery-form/jquery.form.js
            - bundles/sonataadmin/jquery/jquery.confirmExit.js
            - bundles/sonataadmin/vendor/x-editable/dist/bootstrap3-editable/js/bootstrap-editable.min.js
            - bundles/sonatacore/vendor/select2/select2.min.js
            - bundles/sonataadmin/vendor/admin-lte/dist/js/app.min.js
            - bundles/sonataadmin/vendor/iCheck/icheck.min.js
            - bundles/sonataadmin/vendor/slimScroll/jquery.slimscroll.min.js
            - bundles/sonataadmin/vendor/waypoints/lib/jquery.waypoints.min.js
            - bundles/sonataadmin/vendor/waypoints/lib/shortcuts/sticky.min.js
            - bundles/sonataadmin/vendor/readmore-js/readmore.min.js
            - bundles/sonataadmin/Admin.js
            - bundles/sonataadmin/treeview.js

I think it is a much better solution if you create a new javascript file bottom of the DOM. After that you can override the affected Admin.js method like code below.

You can do that because the Admin object is in the global window object. :)

Eg: You would like to modify the setup_list_modal method.

// assets/js/admin.js

window.Admin.setup_list_modal = function (modal) {
     // Your code...
};

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM