Получение $wa->приложение в Smarty.

4

Часто в темах вижу что-то вроде этого:

{if $wa_app == 'site'}
    {$pages = $wa->site->pages()}
{elseif $wa_app == 'shop'}
    {$pages = $wa->shop->pages()}
{elseif $wa_app == 'blog'}
    {$pages = $wa->blog->pages()}
{else}
    {$pages = []}
{/if}

Видимо так делают потому что в Smarty не доступны конструкции:

$app = $wa->{$wa_app};
$app = $wa->$wa_app;

Эту проблему можно обойти: при вызове "$wa->приложение" срабатывает магический метод "waViewHelper::__get()", мы можем обращаться к этому методу напрямую и передавать переменной имя приложения:

{$app = $wa->__get($wa_app)}

Ну и компактная версия первого примера:

{$pages = $wa->__get($wa_app)->pages()}

2 комментария

Добавить комментарий

Чтобы добавить комментарий, зарегистрируйтесь или войдите