All Versions
19
Latest Version
Avg Release Cycle
40 days
Latest Release
1248 days ago

Changelog History
Page 1

  • v2.9.1 Changes

    November 24, 2020
    • Compiler: improved code indentation
    • BlockMacros: added {include file with blocks} as a successor to {includeblock} (#152)
    • BlockMacros: combination of n:snippet & n:ifcontent is forbidden #243
    • ⏪ Revert "{snippetArea} requires parameter" #240
    • 0️⃣ BlockMacros: parameters in {define} can have default values
    • BlockMacros: {define} accepts named parameters #184 #198
    • 🛠 BlockMacros: fixed variables visibility between blocks depend on block order, alternative solution #178"
    • 👍 BlockMacros: supports expression as block/snippet name
    • 👍 CoreMacros: supports expression in include/extends
    • {embed} can contain {import}
    • Only top-level {block} is auto-closed
    • SecurityPolicy: added new tags & filters
    • 🔄 changed \RuntimeException to Latte\RuntimeException
    • 🔄 changed word 'modifier' --> 'filter' in exception messages
    • ⏪ Revert "Template imported via {import} can use {extends}"
    • CoreMacros: {breakIf} and {continueIf} checks ancestors instead of parents #239
    • 0️⃣ Defaults: filter 'webalize' is optional and depends on nette/utils #238
    • CoreMacros: modified use of temporary variables
    • 🛠 CoreMacros: fixed {var} in {switch} usage #237
    • Compiler: tag name can contain dots, dashes and colons #236
    • 🚚 BlockMacros: removed checks if dynamic snippet is used in {snippet} or {snippetArea} #134

    For the details you can have a look at the diff.

  • v2.9.0 Changes

    November 16, 2020

    🆕 New Features

    • possibility to {include block from file}
    • filter |sort, |clamp & custom function clamp()
    • ➕ added {ifchanged}
    • ➕ added {skipIf}
    • ➕ added {foreach} {else} {/foreach}
    • ➕ added {try} & {else} & {rollback}
    • ➕ added {embed file.latte}
    • ➕ added local blocks {block local name} & {define local name}
    • {case 1, 2, 3} accepts more than one option
    • syntax {include block foo} and {include file foo}
    • syntax {ifset block foo}
    • syntax {ifset #$blockName}
    • ➕ added $iterator->parent, returns the iterator surrounding the current one
    • ➕ added $iterator->counter0, returns 0-indexed counter
    • 👍 implemented support for named arguments
    • ➕ added null-coalescing-safe operator ??->

    👌 Improvements & Fixes

    • template code: direct HTML changed to 'echo' statements
    • 🛠 BlockMacros: fixed variables visibility between blocks depend on block order [Closes #178]
    • FilterExecutor::filterContent() converts HtmlStringable to text [Closes #215]
    • 👍 Compiler: supports uppercases AND|OR|XOR [Closes #172]
    • 🔨 BlockMacros: big refactoring
    • 🚚 Template & BlockMacros: used new class Block, removed $blockQueue & $blockTypes
    • 🚚 Template: removed old accumulator $_b (deprecated in 2.4, BC break)
    • ➕ added Defaults: default filters list moved here from FilterExecutor
    • CoreMacros: replaced global queuened temporary variables with local ones
    • BlockMacros: snippet driver wrapped in try ... finally
    • Parser: fixed parsing {__()} [Closes #226]
    • checks for valid macro/filter/function/block names
    • macros validates arguments, modifiers, position (MacroNode::validate())
    • {debugbreak} uses only xdebug
    • 🔄 changed word 'macro' --> 'tag' in exception messages
    • CachingIterator: do not ask when not in valid state (#230)
    • 👌 improved typehints
    • PhpHelpers::reformatCode() appends correctly semicolon after '${""}'

    🔄 Changes

    • 🗄 Colons as argument separators in modifiers are deprecated (BC break)
    • optional chaining: operator ?-> in Latte behaves the same as in PHP (BC break)
    • 🗄 optional chaining: deprecated support for $var? and $obj?::$prop to be consistent with PHP 8 (BC break)
    • internal variables are prefixed $__ and disallowed to be used
    • Template: changed $contentType and $blocks to constants CONTENT_TYPE & BLOCKS
    • 🚚 Template & BlockMacros: moved snippets to own layer, removed '_' prefix
  • v2.9.0-RC4

    November 12, 2020
  • v2.9.0-RC3

    November 08, 2020
  • v2.9.0-RC2

    November 06, 2020
  • v2.9.0-RC1

    November 05, 2020
  • v2.8.3 Changes

    November 04, 2020
    • compatible with PHP 8.0
    • CoreMacros: varType accepts complex types #234
    • ✂ removed short ternary deprecation notice
    • ➕ added Template::getBlockNames()
    • 💅 coding style

    For the details you can have a look at the diff.

  • v2.8.2 Changes

    September 29, 2020
    • Engine: added invokeFunction()
    • Filters::escapeJS: escapes slashes only when needed
    • 🛠 Filters::escapeJS: fixed escaping of CDATA #231
    • 👻 PhpWriter: improved exception when |noescape or |nocheck is not expected

    For the details you can have a look at the diff.

  • v2.8.1 Changes

    May 12, 2020
    • 👻 Engine: implemented custom exception handler for {sandbox}
    • 📇 renamed Latte\SecurityViolation -> SecurityViolationException (BC break!)
    • Template: improved runtime method/property checking
    • PhpWriter: variable variables $$ when policy is enabled
    • PhpWriter: disabled underscored $_ when policy is enabled
    • 👻 PhpWriter: improved exception when |noescape or |nocheck is not allowed

    For the details you can have a look at the diff.

  • v2.8.0 Changes

    April 20, 2020
    • ➕ added macro {sandbox}
    • implemented policy checking
    • PhpWriter: disabled $this/break/case/catch/continue/... when policy is enabled
    • 🗄 PhpWriter: deprecated backtick operator
    • PhpWriter: disabled _halt_compiler/declare/die/eval/exit/include/include_once/require/require_once in templates
    • ➕ added {do} as alias for {php}
    • Engine::loadTemplate() uses the same locking mechanism as RobotLoader
    • 💅 templates: added typehints to generated methods & improved coding style
    • {=...}, {php...}, {do...} must have arguments (BC break)

    For the details you can have a look at the diff.