Manage locale in URL

master
Julien Rosset 1 year ago
parent a9ad001ebc
commit d4fb881087

@ -4,50 +4,51 @@
"minimum-stability": "stable",
"prefer-stable": true,
"require": {
"php": ">=8.1",
"ext-ctype": "*",
"ext-iconv": "*",
"doctrine/annotations": "^2.0",
"doctrine/dbal": "^3",
"doctrine/doctrine-bundle": "^2.9",
"php": ">=8.1",
"ext-ctype": "*",
"ext-iconv": "*",
"doctrine/annotations": "^2.0",
"doctrine/dbal": "^3",
"doctrine/doctrine-bundle": "^2.9",
"doctrine/doctrine-migrations-bundle": "^3.2",
"doctrine/orm": "^2.15",
"doctrine/orm": "^2.15",
"phpdocumentor/reflection-docblock": "^5.3",
"phpstan/phpdoc-parser": "^1.20",
"phpstan/phpdoc-parser": "^1.20",
"stof/doctrine-extensions-bundle": "^1.7",
"symfony/asset": "6.4.*",
"symfony/asset-mapper": "6.4.*",
"symfony/console": "6.4.*",
"symfony/asset": "6.4.*",
"symfony/asset-mapper": "6.4.*",
"symfony/console": "6.4.*",
"symfony/doctrine-messenger": "6.4.*",
"symfony/dotenv": "6.4.*",
"symfony/dotenv": "6.4.*",
"symfony/expression-language": "6.4.*",
"symfony/flex": "^2",
"symfony/form": "6.4.*",
"symfony/framework-bundle": "6.4.*",
"symfony/http-client": "6.4.*",
"symfony/intl": "6.4.*",
"symfony/mailer": "6.4.*",
"symfony/mime": "6.4.*",
"symfony/monolog-bundle": "^3.0",
"symfony/notifier": "6.4.*",
"symfony/process": "6.4.*",
"symfony/property-access": "6.4.*",
"symfony/property-info": "6.4.*",
"symfony/rate-limiter": "6.4.*",
"symfony/runtime": "6.4.*",
"symfony/security-bundle": "6.4.*",
"symfony/serializer": "6.4.*",
"symfony/string": "6.4.*",
"symfony/translation": "6.4.*",
"symfony/twig-bundle": "6.4.*",
"symfony/validator": "6.4.*",
"symfony/web-link": "6.4.*",
"symfony/yaml": "6.4.*",
"symfonycasts/sass-bundle": "^0.6.0",
"symfony/flex": "^2",
"symfony/form": "6.4.*",
"symfony/framework-bundle": "6.4.*",
"symfony/http-client": "6.4.*",
"symfony/intl": "6.4.*",
"symfony/mailer": "6.4.*",
"symfony/mime": "6.4.*",
"symfony/monolog-bundle": "^3.0",
"symfony/notifier": "6.4.*",
"symfony/process": "6.4.*",
"symfony/property-access": "6.4.*",
"symfony/property-info": "6.4.*",
"symfony/rate-limiter": "6.4.*",
"symfony/runtime": "6.4.*",
"symfony/security-bundle": "6.4.*",
"symfony/serializer": "6.4.*",
"symfony/string": "6.4.*",
"symfony/translation": "6.4.*",
"symfony/twig-bundle": "6.4.*",
"symfony/validator": "6.4.*",
"symfony/web-link": "6.4.*",
"symfony/yaml": "6.4.*",
"symfonycasts/sass-bundle": "^0.6.0",
"symfonycasts/verify-email-bundle": "^1.17",
"twbs/bootstrap": "^5.3",
"twig/extra-bundle": "^3.0",
"twig/twig": "^3.0"
"twbs/bootstrap": "^5.3",
"twig/extra-bundle": "^3.0",
"twig/string-extra": "^3.10",
"twig/twig": "^3.0"
},
"config": {
"allow-plugins": {

@ -1,5 +1,5 @@
framework:
default_locale: en
default_locale: '%locale.default%'
translator:
default_path: '%kernel.project_dir%/translations'
fallbacks:

@ -1,5 +1,10 @@
core_root_redirect:
path: /
controller: App\Controller\CoreController::root_redirect
controllers:
resource:
path: ../src/Controller/
namespace: App\Controller
type: attribute
prefix: /{_locale<%locale.all%>}

@ -7,6 +7,9 @@ parameters:
mailer.email: '%env(MAILER_EMAIL)%'
mailer.name: '%env(MAILER_NAME)%'
locale.all: 'en|fr'
locale.default: 'en'
services:
# default configuration for services in *this* file
_defaults:

@ -3,6 +3,7 @@
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
@ -10,6 +11,19 @@ use Symfony\Component\Routing\Attribute\Route;
* Controller for core page : home, etc.
*/
class CoreController extends AbstractController {
/**
* Redirection for root URL (without locale)
*
* @param Request $request The request
*
* @return Response The response
*/
public function root_redirect (Request $request): Response {
return $this->redirectToRoute('core_main', [
'_locale' => $request->getPreferredLanguage(explode('|', $this->getParameter('locale.all'))),
]);
}
/**
* Home page
*

Loading…
Cancel
Save