composer require alexandermatveev/backbone-bundle
app/AppKernel.php:
new AlexanderMatveev\BackboneBundle\AlexanderMatveevBackboneBundle(),
php bin/console assets:install web --symlink
base.html.twig):
<script src="{{ asset('bundles/alexandermatveevbackbone/js/underscore-min.js') }}"></script>
<script src="{{ asset('bundles/alexandermatveevbackbone/js/backbone-min.js') }}"></script>
Verify by checking the browser's Network tab for loaded files.Asset Organization:
assets:install to symlink assets to web/bundles/alexandermatveevbackbone/js/.config.yml:
alexander_matveev_backbone:
underscore_path: 'bundles/yourbundle/js/underscore-custom.js'
backbone_path: 'bundles/yourbundle/js/backbone-custom.js'
Twig Templating:
{# templates/base.html.twig #}
{% block backbone_scripts %}
<script src="{{ asset(backbone.underscore_path) }}"></script>
<script src="{{ asset(backbone.backbone_path) }}"></script>
{% endblock %}
asset() function or pass them as Twig globals.Symfony Controller Integration:
// src/AppBundle/Controller/ApiController.php
public function getModelAction()
{
return $this->json([
'id' => 1,
'name' => 'Example'
]);
}
$.get('/api/model', function(data) {
var model = new Backbone.Model(data);
});
Asset Versioning:
<script src="{{ asset('bundles/alexandermatveevbackbone/js/backbone-min.js?v=' ~ '1.0') }}"></script>
Outdated Dependencies:
webpack-encore or yarn).config.yml:
alexander_matveev_backbone:
underscore_path: 'bundles/yourbundle/js/underscore@1.13.6.js'
backbone_path: 'bundles/yourbundle/js/backbone@1.4.0.js'
Asset Installation Issues:
assets:install fails, manually create symlinks:
ln -s vendor/alexandermatveev/backbone-bundle/Resources/public/js/underscore-min.js web/bundles/alexandermatveevbackbone/js/
web/bundles/ directory exists and is writable.Twig Path Resolution:
asset() fails, verify the bundles/alexandermatveevbackbone/ directory exists in web/. Use absolute paths as a fallback:
<script src="{{ asset('js/backbone-min.js') }}"></script>
(Place files directly in web/js/ if needed.)Symfony 4+ Compatibility:
webpack + backbone-starter) or wrap this bundle in a custom autoloader.Verify Asset Loading:
{{ dump(asset('bundles/alexandermatveevbackbone/js/backbone-min.js')) }} in Twig to debug paths.Console Errors:
undefined, ensure:
Backbone).Configuration Overrides:
config.yml:
php bin/console cache:clear
Custom Builds:
webpack):
// webpack.config.js
module.exports = {
entry: './resources/assets/js/backbone-app.js',
output: {
path: __dirname + '/web/bundles/yourbundle/js',
filename: 'backbone-custom.js'
}
};
config.yml to point to the custom path.Local Development:
<script src="{{ asset('bundles/alexandermatveevbackbone/js/underscore.js') }}"></script>
<script src="{{ asset('bundles/alexandermatveevbackbone/js/backbone.js') }}"></script>
Integration with Symfony Forms:
var formData = {};
$('form').serializeArray().forEach(function(item) {
formData[item.name] = item.value;
});
var model = new Backbone.Model(formData);
How can I help you explore Laravel packages today?