Если вы определили класс __toString()
в своем пользовательском объекте и получили этот идентификатор, тогда вы можете использовать оператор объединения нулей:
class User
{
public function __toString()
{
return (string) $this->getId();
}
}
$data['id_user'] = $user ?? null;
Это также не будет генерировать никаких предупреждений. [ 113]
Однако, это не очень помогает, если у вас есть более одного поля, с которым вы хотите сделать это.
Любое из этих двух решений выше работало бы. Решение VelocityLayoutServlet требует дополнительного пакета (также от Скорости) названный Скоростными Инструментами. Я неравнодушен к этому подходу (и варианты) сам.
Третий метод должен просто поместить #parse в кавычках:
set ($body="#parse('body.vm')")
В #set что-либо в двойных кавычках оценено. Строки в одинарных кавычках передаются в буквально.
Можно сделать это использование VelocityLayoutServlet, который является частью VelocityTools.
Это позволяет Вам определять расположение для своего приложения - давайте назовем его application.vm
- в котором можно проанализировать в заголовках, нижние колонтитулы и т.д. и объявить, куда содержание основной части помещается с помощью screen_content
объявление, например:
<html>
<head>
<title>$subject</title>
</head>
<body>
#parse("header.vm")
$screen_content
#parse("footer.vm")
</body>
</html>
VelocityLayoutServlet
будет evalulate шаблоны (и, следовательно, переменные) прежде, чем представить, который позволяет Вам устанавливать a $subject
переменная в Вашем шаблоне тела, например:
#set($subject = "My Subject")
<div id="content">
</div>
Более подробная информация может быть найдена в Скоростной документации.
Если я понимаю Вас правильно, Вы хотите иметь Скоростную названную переменную $subject
интерполированный в header.vm
и body.vm
шаблоны. Прямо сейчас переменная определяется в body.vm
шаблон, таким образом, Вы не можете обратиться к нему в более раннем шаблоне header.vm
.
Почему Вы не абстрагируете определение $subject в его собственный шаблонный отрывок, названный globals.vm
скажите, затем включайте это в шаблон верхнего уровня. Таким образом, Вы имели бы:
#parse("globals.vm")
#parse("header.vm")
#parse("body.vm")
#parse("footer.vm")