Назначить переменную из Smarty в PHP

Я использую Smarty для eMail-Templates и хочу, чтобы тема письма была в одном месте с шаблоном тела.

Моей первой попыткой было установить тему с помощью

{assign var="subject" value="mySubject"}

и получить к нему доступ с помощью

$smart->getTamplateVars();

но темы нигде нет.

Мое текущее рабочее решение:

{php}
    global $subject;
    $subject = "My Subject";
{/php}

Но использование SmartyBC и {php} кажется неправильным.

Есть ли лучший способ добиться этого?


person Dirk Kammilla    schedule 05.02.2015    source источник


Ответы (1)


Вы не должны назначать переменные в Smarty, а затем использовать их в PHP. Подход состоит в том, чтобы назначить переменные в вашем контроллере, а затем отобразить их в вашем представлении. Вы действительно должны прочитать о шаблоне MVC. Более того, не используйте глобальные переменные, это действительно плохое решение. Тег {php} является необязательным, и им не следует злоупотреблять.

http://www.smarty.net/sampleapp1 по этой ссылке вы найдете пример приложения, проверьте его и посмотрите как это должно выглядеть.

person Robert    schedule 05.02.2015
comment
Я думаю, что в этом случае электронная почта является представлением, и поскольку тема является частью электронной почты, она должна быть частью шаблона. Теперь я сам понимаю, что {php} и global - это не выход, но у вас есть другое решение? - person Dirk Kammilla; 05.02.2015
comment
Да, в действии контроллера назначьте тему электронной почты, отобразите ее и отправьте по электронной почте. Я все еще не вижу необходимости назначать его в файле шаблона. - person Robert; 05.02.2015
comment
Это будет означать, что часть представления (субъекта) находится в контроллере, и дизайнер должен редактировать его там. - person Dirk Kammilla; 06.02.2015
comment
Часть темы может быть отправлена ​​​​через форму или может быть в БД. - person Robert; 09.02.2015