import třídy i s namespace v šabloně
- theo
- Člen | 57
Narazil jsem na problém spočívající v tom, že uvnitř šablony
potřebuju použít určitou třídu, ale protože pracuju v PHP 5.3 tak
používám namespace, takže to danou třídu nenajde (leda že ji napíšu
včetně namespace), což je ale hrozně dlouhé.
Příklad (v šabloně):
<?php
{if $employee->isAllowedTo(Models\IdentityModels\PermissionModel::READ, Models\IdentityModels\PermissionModel::EMPLOYEE)}
?>
Lze to řešit nějak elegantně? Pokus o
use Models\IdentityModels\PermissionModel;
na začátku šablony
pochopitelně neprojde, protože už se před tím vykoná inicializace té
šablony, takže use
už se na to místě prostě použít
nedá :/
- ic
- Člen | 430
Tak jsou tam různé helpery, které se hodí a teď by se mi hodil helper co
dělá to samé jako String::endsWith
a určitě bude spousta
specifických požadavků na které zatím helpery nejsou. Mohl bych si ho
dopsat, to jasné, ale použití <?php ...
a zápis
i s namespace je rychlejší. A i když bych ho dopsal nemyslím že by se
to mohlo někomu dalšímu ještě hodit… chtělo by to nějaké
univerzálnější řešení, něco jako ‚custom helper‘
- Filip Procházka
- Moderator | 4668
udělej si vlastní makro, něco jako
// nějak takhle :)
LatteMacros::$defaultMacros['ifAllowedTo'] = '<?php echo MyMacros::isAllowedTo(%%, %%); ?>';
{ifAllowedTo $resource, $action}
{/if} {* tohle makro už vytvářet nemusíš :) *}
use Models\IdentityModels\PermissionModel;
MyMacros::isAllowedTo($resource, $action = NULL) {
return Environment::getUser()->isAllowedTo(constant('PermissionModel::'.$resource), constant('PermissionModel::'.$action));
}
je to víceméně pseudokód, doladit si to musíš sám :)