Within an application that I am building I got a admin with an locale variable (en/nl)
#[Route('/{_locale<%app.supported_locales%>}/admin', name: 'admin')]
public function index(): Response
Now everything is working fine but I am creating unit tests to test the application. Easyadmin has a own $this->generateIndexUrl and when I try to request the url:
$this->client->request("GET", $this->generateIndexUrl(null, $this->getDashboardFqcn(), $this->getControllerFqcn()), [
"_locale" => "en",
"_route_params" => [
"_locale" => "en"
]
]);
It gives me an Exception: Symfony\Component\Routing\Exception\MissingMandatoryParametersException : Some mandatory parameters are missing ("_locale") to generate a URL for route "admin".
After searching and searching I can't find any method to set the 'mandatory' _locale. Anyone got any ideas?
I tried several things:
// Set the locale
$this->client->setServerParameters([
'HTTP_ACCEPT_LANGUAGE' => 'en',
'_locale' => 'en'
]);
setlocale(LC_ALL, 'en_GB');
$session = $this->createSession($this->client);
$container = $this->client->getContainer();
$sessionSavePath = $container->getParameter('session.save_path');
$sessionStorage = new MockFileSessionStorage($sessionSavePath);
$session = new Session($sessionStorage);
$session->start();
$session->set('_locale', 'en');
$session->save();
All with not the desired effect. I got it working with an request in front of this one where I specify the route and _locale in an other way.
$url = $router->generate('admin', ['_locale' => 'en']);
$this->client->request("GET", $url);
And strangely putting this one in front of the other, gives the desired effect because it takes the locale settings from this one.
I haven't found a method or variable yet to just set the locale with the EasyAdmin 4 method $this->generateIndexUrl.
I really hope someone has the answer how to give the route the required locale parameter within the Unit test and EasyAdmin