Скорость #parse, но присваивает его переменной

Если вы определили класс __toString() в своем пользовательском объекте и получили этот идентификатор, тогда вы можете использовать оператор объединения нулей:

class User
{
    public function __toString()
    {
        return (string) $this->getId();
    }
}

$data['id_user'] = $user ?? null;

Это также не будет генерировать никаких предупреждений. [ 113]

Однако, это не очень помогает, если у вас есть более одного поля, с которым вы хотите сделать это.

10
задан Dana the Sane 2 November 2008 в 22:34
поделиться

3 ответа

Любое из этих двух решений выше работало бы. Решение VelocityLayoutServlet требует дополнительного пакета (также от Скорости) названный Скоростными Инструментами. Я неравнодушен к этому подходу (и варианты) сам.

Третий метод должен просто поместить #parse в кавычках:

set ($body="#parse('body.vm')")

В #set что-либо в двойных кавычках оценено. Строки в одинарных кавычках передаются в буквально.

10
ответ дан 3 December 2019 в 23:52
поделиться

Можно сделать это использование 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>

Более подробная информация может быть найдена в Скоростной документации.

3
ответ дан 3 December 2019 в 23:52
поделиться

Если я понимаю Вас правильно, Вы хотите иметь Скоростную названную переменную $subject интерполированный в header.vm и body.vm шаблоны. Прямо сейчас переменная определяется в body.vm шаблон, таким образом, Вы не можете обратиться к нему в более раннем шаблоне header.vm.

Почему Вы не абстрагируете определение $subject в его собственный шаблонный отрывок, названный globals.vm скажите, затем включайте это в шаблон верхнего уровня. Таким образом, Вы имели бы:

#parse("globals.vm")
#parse("header.vm")
#parse("body.vm")
#parse("footer.vm")
0
ответ дан 3 December 2019 в 23:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: