<h3>
в<p>
, не должна требовать изменения кода вашего приложения. Точно так же преобразование простого маршрута типа GET /about
to GET /about-us
не должно оказывать никакого влияния на ваш пользовательский интерфейс и бизнес-логику (представление и модель в MVC или представление и метод в RMR).template.htm
:View
класс для визуализации шаблона PHP хранящегося в template.htm
файле:Template
классом. Приведенный выше фрагмент HTML может быть переписан следующим образом:\Template::instance()
.
Тем не менее вы также можете создать новый экземпляр с new \Template();
.GET /brew/@count
пример в предыдущем разделе?), Маркеры шаблона F3 начинаются с @
символа, за которым следует ряд букв и цифр, заключенных в фигурные скобки. Первый символ должен быть альфа. Шаблонные токены имеют однозначное соответствие с переменными фреймворка. Фреймворк автоматически заменяет токен значением, хранящимся в переменной с тем же именем.@name
маркер в нашем шаблоне значением, присвоенным переменной name. Во время выполнения вывод вышеприведенного кода будет выглядеть следующим образом::$template->render()
. Затем фреймворк использует этот скомпилированный код во всех последующих вызовах. Следовательно, производительность должна быть такой же, как и у шаблонов PHP, если не лучше из-за оптимизации кода, выполняемой компилятором шаблонов, когда задействованы более сложные шаблоны.string
,integer
, boolean
или float
типами данных.@buddy
массив в вашем PHP коде перед подачей шаблона:{{ @buddy }}
его в свой шаблон, PHP сгенерирует Array to string conversion
уведомление во время выполнения.@[email protected]
это конкатенация строк ($foo.$bar
), тогда @foo.bar
как переводится $foo['bar']
в. Если $foo[$bar]
это то, что вы намеревались, используйте @foo[@bar]
обычную нотацию.<include>
Директива имеет необязательный if
атрибут, позволяющий указать условие, которое должно быть выполнено для вставки подшаблона:with
атрибута:TRUE
-константу как с-переменную, так как все атрибуты анализируются как строка.<exclude>
директиву для этой цели:<!-- comment -->
тег HTML-комментария, но <exclude>
директива делает HTML-блок полностью невидимым после рендеринга шаблона.<check>
директива. Он позволяет встраивать HTML-фрагмент в зависимости от оценки определенного условия. Вот несколько примеров:<check>
директив, сколько вам нужно.NULL
пустой строке, логическому FALSE
значению, пустому массиву или нулю, автоматически вызывается <false>
. Если ваш шаблон не имеет <false>
блока, то <true>
открывающие и закрывающие теги являются необязательными:group
Атрибут @fruits
внутри <repeat>
директивы должен быть массивом и должен быть установлен в вашем PHP коде соответствующим образом:@fruit
в коде приложения ничего не дает. Fat-Free игнорирует любое заданное значение, которое у него может быть, потому что он использует переменную для представления текущего элемента во время итерации по группе. Вывод приведенного выше фрагмента HTML шаблона и соответствующего PHP кода становится:<repeat>
блоков:div
, чтобы заменить @div
токен. Fat-Free делает как программирование, так и дизайн веб-шаблонов действительно простыми.<repeat>
директивы template value
возвращает значение текущего элемента в итерации. Если вам нужно получить ключ массива текущего элемента, используйте key
вместо него атрибут. key
Атрибут необязателен.<repeat>
также имеет необязательный атрибут счетчика, который можно использовать следующим образом:@ctr
, которая используется в нашем примере для определения нечетной/четной классификации.<script><style>
раздела или вашего шаблона, фреймворк все равно заменит их обычным способом:<script><style>
теги or не требует специальной обработки:GET /
, но вызовут проблемы при переходе к GET /@category/@article
приложению или запуске приложения из подкаталога в общедоступном корневом каталоге вашего веб-пространства (http://domain.com/my-F3-App/
т. е. Чтобы решить эту проблему, вы должны либо дополнить все свои пути общедоступным базовым путем, как это:<base>
тега в вашем документе: в основном вам также нужно префиксить все якорные ссылки страниц (<a href="{{@PATH}}#top">go to top</a>
).ENCODING
системную переменную следующим образом:{{ @variable }}{{ expression }}
жетоны, <repeat>
, <check>
, <include>
, и <exclude>
директивы. Просто скажите F3, что вы передаете XML-файл вместо HTML:dict/en.php
. Давайте создадим еще один словарь, на этот раз для немецкого языка. Сохраните файл какdict/de.php
:dict/
папке:Accept-Language
заголовок, отправленный браузером.pi
существует только в словаре английского языка. Фреймворк всегда будет использовать резервный язык для заполнения ключей, которые отсутствуют в указанном или обнаруженном языке(языках). В нашем примере ключpi
, присутствующий в словаре английского языка, был выбран потому, что английский язык является резервным языком по умолчанию, установленным F3 при запуске. Поэтому важно убедиться, что все многоязычные тексты, используемые на вашем сайте, определены в словаре резервного языка в противном случае во время выполнения будет вызвана ошибка или, по крайней мере, предупреждение или уведомление, когда будет сделана ссылка на неопределенную переменную.FALLBACK
hive:en-US
,es-AR
, и т.д. В этом случае F3 сначала будет использовать языковой вариант, например es-AR
. Если есть ключи, которые не существуют в словаре вариантов, фреймворк будет искать ключ в корневом языке , напримерes
, и, если он все еще не найден, использовать определенный резервный языковой файл.'Today is {0,date}'
закономерность в нашем предыдущем примере? Многоязычная возможность F3 зависит от правил форматирования строк/сообщений проекта ICU. Фреймворк использует свое собственное подмножество реализации форматирования строк ICU. Нет никакой необходимости в intl
том, чтобы расширение PHP было активировано на сервере.dict/en.ini
таковой, чтобы фреймворк мог загружать его автоматически. Языковая переменная принимает тот же тип строки, что и заголовок HTTP Accept-Language, который представляет собой разделенный запятыми список 2-буквенных кодов языков, за которыми необязательно следует дефис и 2-буквенный код страны.
NB: несмотря на то, что локали POSIX используют подчеркивание в качестве разделителя (es_BR.UTF-8), вы должны определить языковую переменную с дефисом (es-BR). Файлы словарей следуют тому же правилу (es-BR.php / es-BR.ini).raw
фильтр:$f3->scrub()
это позволяет всем HTML-тегам проходить через нетронутые и просто удалять небезопасные управляющие символы.{{ @desc,100 | crop }}
, а также комбинировать их like {{ @desc,100 | crop,raw }}
. Поэтому вам просто нужно зарегистрировать новый фильтр с помощью метода filter. Для собственных обработчиков html-тегов / элементов, которые могут отображать все, что вы хотите, проверьте метод template->extend>. Для получения более подробных описаний пользовательских фильтров и работы всей системы шаблонов см. расширенную часть руководства пользователя по шаблону.