Installation
composer require chris13/front-render-bundle "~1"
Add to config/bundles.php:
return [
// ...
Chris13\FrontRenderBundle\Chris13FrontRenderBundle::class => ['all' => true],
];
Basic Configuration
Edit app/config/config.yml:
chris13_front_render:
base_url: "http://localhost:3000" # Your frontend app URL
assets_version: "1.0" # Cache-busting version
First Use Case In a controller, render a frontend route:
use Chris13\FrontRenderBundle\Controller\FrontRenderController;
class MyController extends FrontRenderController
{
public function indexAction($route, $params = [])
{
return $this->renderFront($route, $params);
}
}
Route it in routes.yml:
my_front_route:
path: /frontend/{route}
defaults: { _controller: App\Controller\MyController::indexAction }
Frontend Route Proxying
Use renderFront() to proxy requests to your frontend app (e.g., Angular/Backbone):
return $this->renderFront('dashboard', ['userId' => 123]);
URL generated: /frontend/dashboard?userId=123
Asset Management Bundle static assets (JS/CSS) with versioning:
{{ asset('bundles/frontrender/js/app.js', {'version': chris13_front_render.assets_version}) }}
Hybrid Rendering Mix Symfony and frontend templates:
{% extends 'base.html.twig' %}
{% block content %}
{{ parent() }}
{{ renderFront('partials/header') }}
{% endblock %}
API Integration Fetch frontend data via Symfony controllers:
$frontendData = $this->renderFront('api/data', [], true); // `true` for raw response
chris13_front_render:
cache_enabled: true
cache_lifetime: 3600
$params = ['user' => $this->getUser()->getRoles()];
return $this->renderFront('dashboard', $params);
chris13_front_render:
error_handler: App\Handler\FrontErrorHandler
Outdated Package
CORS Issues
base_url in config matches frontend’s CORS allowed origins.Cache Invalidation
assets_version changes:
php bin/console cache:clear
Route Collisions
/login).chris13_front_render:
debug: true
renderFront($route, [], true) to inspect raw HTTP responses.Custom Handlers
Override FrontRenderController to modify behavior:
class CustomFrontRenderController extends FrontRenderController
{
protected function getFrontUrl($route, array $params)
{
// Custom logic (e.g., add auth token)
return parent::getFrontUrl($route, $params) . '&token=' . $this->getAuthToken();
}
}
Middleware Add Symfony middleware to preprocess frontend requests:
# config/packages/framework.yaml
framework:
http_client:
middleware:
- Chris13\FrontRenderBundle\Middleware\FrontRequestMiddleware
Twig Extensions Extend Twig for dynamic frontend rendering:
// src/Twig/FrontExtension.php
class FrontExtension extends \Twig\Extension\AbstractExtension
{
public function getFunctions()
{
return [
new \Twig\TwigFunction('render_front', [$this->container->get('front_renderer'), 'render']),
];
}
}
Usage in Twig:
{{ render_front('partials/sidebar', {'user': user}) }}
How can I help you explore Laravel packages today?