Closed jirinapravnik closed 9 years ago
To určitě! :) @TomasVotruba máš napad jak to otestovat? ;)
Chce to konkrétní fail case (minimální možný kód, který se nechová dle očekávání) od @jirinapravnik. Já se teď zapojím max. komentářem.
Obyčejně nejvíce používaný to je v případ formulářových rendererů, Například když používám Nextras/Forms, který má renderer pro Bootstrap a překrývá třeba i makra input a label.
No a pak mam tedy nejaky AppModuleExtension, kde volám:
public function getLatteMacros()
{
return [
'Nextras\Forms\Bridges\Latte\Macros\BS3InputMacros',
];
}
to sice proběhne, jako že v pořádku, ale ty makra nejsou překryta, takhle to vypadá vygenerované v DIC:
public function create()
{
$service = new Latte\Engine;
$service->setTempDirectory('../temp/cache/latte');
$service->setAutoRefresh(TRUE);
$service->setContentType('html');
Nextras\Forms\Bridges\Latte\Macros\BS3InputMacros::install($service->getCompiler());;
$service->onCompile = $this->container->getService('1.manager')->createEvent(array('Latte\\Engine', 'onCompile'), $service->onCompile);
return $service;
}
teď už to proběhne v pořádku, makra jsou překryta, a DIC vypadá takto:
public function create()
{
$service = new Latte\Engine;
$service->setTempDirectory('/../temp/cache/latte');
$service->setAutoRefresh(TRUE);
$service->setContentType('html');
$service->onCompile[] = function($engine) { Nextras\Forms\Bridges\Latte\Macros\BS3InputMacros::install($engine->getCompiler()); };
$service->onCompile = $this->container->getService('1.manager')->createEvent(array('Latte\\Engine', 'onCompile'), $service->onCompile);
return $service;
}
Přidal jsem základní test... nebyl jsem si jist, jak nejlépe to otestovat, takže kdyby měl někdo lepší nápad, tak je vitaný :)
Jak jsem psal v #13 tak bohužel testy neumím pořádně, tak kdybyste někdo doplnil, abychom o to zase někdy v budoucnu nepřišli:-)