Commit Graph

1554 Commits

Author SHA1 Message Date
LucileDT d0177b94cd Add note to format_datetime explaining how to install required extensions 2025-08-23 22:02:14 +02:00
bodendorfer-simplethings b40934891b Fix wrong rounding_mode values 2025-08-15 14:30:41 +02:00
Nicolas Grekas 85a4817128 CS fixes 2025-07-29 10:07:07 +02:00
hschletz b8827b412d Add documentation for use_yield option
Documentation was present in the source code, but missing in the docs.
2025-07-02 12:45:53 +02:00
Fabien Potencier 403bd9d73c minor #4649 Coding standard suggestion about empty content (VincentLanglet)
This PR was merged into the 3.x branch.

Discussion
----------

Coding standard suggestion about empty content

Hi `@fabpot`

As suggested by `@stof` https://github.com/symfony/symfony/pull/60761#discussion_r2140647490

This would allow writing `{#--#}` rather than `{#- -#}` when following the twig coding standard.

Commits
-------

0b93a1fa5a Stof suggestion about empty content
2025-06-15 16:42:08 +02:00
Vincent Langlet 0b93a1fa5a Stof suggestion about empty content 2025-06-12 08:47:12 +02:00
Thomas Landauer a26f43a6a6 Update templates.rst: Removing duplication
Page: https://twig.symfony.com/doc/3.x/templates.html#dot_operator

Reason: This is repeated a few lines further down.
2025-06-05 23:22:30 +02:00
Fabien Potencier 9ff927ae5d minor #4638 Update reduce.rst (AndCycle)
This PR was merged into the 3.x branch.

Discussion
----------

Update reduce.rst

remove note, better argument for example
reduce doesn't use `array_reduce` internally

https://github.com/twigphp/Twig/issues/3802
https://github.com/twigphp/Twig/commit/609794c37668989b670d79e97baf8d5ce05e0a97

Commits
-------

bb6382c1bb Update reduce.rst
2025-05-18 10:07:38 +02:00
Christian Flothmann 057ea92274 replace typographic quote with straigt single quote
make DOCtor-RST 1.68 happy and account for OskarStark/doctor-rst#2011
2025-05-17 21:08:00 +02:00
Simon André 2184db3b9b Add TwigCsFixer in tools list
Twig CS Fixer is already present in the code style / conventions page, but it feels to me very logical we see it on the "integration / tools" page.
2025-05-16 00:37:43 +02:00
AndCycle bb6382c1bb Update reduce.rst
remove note, better argument for example
reduce doesn't use array_reduce anymore
https://github.com/twigphp/Twig/issues/3802
2025-05-12 16:54:49 +08:00
Fabien Potencier f14f2208f9 Tweaks html_cva docs 2025-03-30 09:51:16 +02:00
Fabien Potencier 7b2fe7cf14 minor #4613 Update html_cva.rst (seb-jean)
This PR was merged into the 3.x branch.

Discussion
----------

Update html_cva.rst

Commits
-------

1a46d12033 Update html_cva.rst
2025-03-30 09:50:03 +02:00
Fabien Potencier 8a7d912deb feature #3916 Create attributes AsTwigFilter, AsTwigFunction and AsTwigTest to ease extension development (GromNaN)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Create attributes `AsTwigFilter`, `AsTwigFunction` and `AsTwigTest` to ease extension development

One drawback to writing extensions at present is that the declaration of functions/filters/tests is not directly adjacent to the methods. It's worse for runtime extensions because they need to be in 2 different classes. See [`SerializerExtension`](https://github.com/symfony/symfony/blob/7.0/src/Symfony/Bridge/Twig/Extension/SerializerExtension.php) and [`SerializerRuntime`](https://github.com/symfony/symfony/blob/7.0/src/Symfony/Bridge/Twig/Extension/SerializerRuntime.php) as an example.

By using attributes for filters, functions and tests definition, we can make writing extensions more expressive, and use reflection to detect particular options (`needs_environment`, `needs_context`, `is_variadic`).

Example if we implemented the `formatDate` filter: https://github.com/twigphp/Twig/blob/aeeec9a5e907a79e50a6bb78979154599401726e/extra/intl-extra/IntlExtension.php#L392-L395

By using the `AsTwigFilter` attribute, it is not necessary to create the `getFilters()` method. The `needs_environment` option is detected from method signature. The name is still required as the method naming convention (camelCase) doesn't match with Twig naming convention (snake_case).

```php
use Twig\Extension\Attribute\AsTwigFilter;

class IntlExtension
{
    #[AsTwigFilter(name: 'format_date')]
    public function formatDate(Environment $env, $date, ?string $dateFormat = 'medium', string $pattern = '', $timezone = null, string $calendar = 'gregorian', string $locale = null): string
    {
        return $this->formatDateTime($env, $date, $dateFormat, 'none', $pattern, $timezone, $calendar, $locale);
    }
}
```

This approach does not totally replace the current definition of extensions, which is still necessary for advanced needs. It does, however, make for more pleasant reading and writing.

This makes writing lazy-loaded runtime extension the easiest way to create Twig extension in Symfony: https://github.com/symfony/symfony/pull/52748

Related to https://github.com/symfony/symfony/issues/50016

Is there any need to cache the parsing of method attributes? They are only read at compile time, but that can have a performance impact during development or when using dynamic templates.

Commits
-------

5886907b28 Create attributes `AsTwigFilter`, `AsTwigFunction` and `AsTwigTest` to ease extension development
2025-03-24 22:34:23 +01:00
Jérôme Tamarelle 5886907b28 Create attributes AsTwigFilter, AsTwigFunction and AsTwigTest to ease extension development 2025-03-24 22:34:21 +01:00
Fabien Potencier 77a6da9cc7 minor #4616 [Docs] Replace = by : in code examples (smnandre)
This PR was merged into the 3.x branch.

Discussion
----------

[Docs] Replace `=` by `:` in code examples

Replace `=` by `:` in code examples
* function/include
* filters/format_number

Commits
-------

84b0499dbd [Docs] Replace `=` by `:` in code examples
2025-03-20 22:33:01 +01:00
Fabien Potencier 2a17b4f495 minor #4617 [Doc] Fix code-block in html_cva (smnandre)
This PR was merged into the 3.x branch.

Discussion
----------

[Doc] Fix `code-block` in html_cva

There is no `terminal` code-block in the current Twig documentation.

Using `bash` here instead is more in line with the other pages.

(...and will allow to simplify CSS needed for code blocks)

Commits
-------

a7c0482dc9 [Doc] Fix `code-block` in html_cva
2025-03-20 22:32:34 +01:00
Simon André 239a060d59 fix: update extension references in docs to use backticks 2025-03-20 08:35:48 +01:00
Simon André a7c0482dc9 [Doc] Fix code-block in html_cva
There is no `terminal` code-block in the current Twig documentation.

Using `bash` here instead is more in line with the other pages.

(...and will allow to simplify CSS needed for code blocks)
2025-03-20 07:30:17 +01:00
Simon André 84b0499dbd [Docs] Replace = by : in code examples
* function/include
* filters/format_number
2025-03-20 07:23:44 +01:00
Bertrand Zuchuat c325912724 fix: deprecated documentation
Co-authored-by: Bertrand Zuchuat <bertrand.zuchuat@gmail.com>
2025-03-14 21:10:34 +01:00
seb-jean 1a46d12033 Update html_cva.rst 2025-03-12 18:12:07 +01:00
Jacob Dreesen ccec90c85c Use : instead of = for named argument in the docs 2025-03-06 17:34:44 +01:00
Fabien Potencier d6c1112f96 minor #4605 reduce the number of deprecations being triggered (xabbuh)
This PR was merged into the 3.x branch.

Discussion
----------

reduce the number of deprecations being triggered

Triggering deprecations for specific arguments is not needed as the method itself is deprecated as well.

Commits
-------

155d0faab4 reduce the number of deprecations being triggered
2025-02-28 16:10:01 +01:00
Christian Flothmann f8b01ebd98 merge the Nodes and Node sections 2025-02-28 14:40:03 +01:00
Christian Flothmann 155d0faab4 reduce the number of deprecations being triggered
Triggering deprecations for specific arguments is not needed as the method
itself is deprecated as well.
2025-02-28 14:36:39 +01:00
Fabien Potencier 71f83ecd0e Tweak Sandbox docs 2025-02-28 07:30:52 +01:00
Fabien Potencier 96dade342f Improve docs on creating new tags 2025-02-27 10:07:32 +01:00
Fabien Potencier 9f275f6ac6 feature #4590 Make the defined test implementation more generic (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Make the defined test implementation more generic

Commits
-------

2d84abfd08 Make the defined test implementation more generic
2025-02-21 18:22:44 +01:00
Fabien Potencier 2d84abfd08 Make the defined test implementation more generic 2025-02-21 08:36:21 +01:00
Christian Flothmann 4c818122f3 fix typo 2025-02-18 15:14:50 +01:00
Christian Flothmann a544dc8b33 fix the rst syntax of the operator precedence table 2025-02-16 22:36:01 +01:00
Fabien Potencier 3964aeba78 Add a proper prefix spread operator 2025-02-14 11:45:39 +01:00
Fabien Potencier 20e677b6c9 Fix docs 2025-02-14 11:33:18 +01:00
Fabien Potencier 79d828b09d Fix version 2025-02-14 08:47:54 +01:00
Fabien Potencier 8ff19090f3 Fix precedence rules 2025-02-14 08:38:53 +01:00
Fabien Potencier 0cb5c0e8d0 Add deprecation notices in CHANGELOG and docs 2025-02-14 08:38:53 +01:00
Fabien Potencier f67078b5c4 Move Operators to ExpressionParsers, deprecate ExpressionParser 2025-02-14 08:38:53 +01:00
Fabien Potencier 9334a7064a Add a script to update operator precedence documentation 2025-02-14 08:38:53 +01:00
Fabien Potencier df877a1d53 Introduce operator classes to describe operators provided by extensions instead of arrays 2025-02-14 08:38:53 +01:00
Fabien Potencier dc6356268b Bump min PHP version to 8.1 2025-01-31 21:45:36 +01:00
Matthieu Pétel 83da53c3f1 Fix typo for html_cva code example
Fix a typo where 'red' should be 'blue' according to the above code.
2025-01-28 10:51:09 +01:00
Fabien Potencier ade8bce516 Deprecate Token::getType() 2025-01-24 15:48:04 +01:00
Fabien Potencier 93466404b7 feature #4550 Deprecate Twig\ExpressionParser::parseOnlyArguments() and Twig\ExpressionParser::parseArguments() (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Deprecate Twig\ExpressionParser::parseOnlyArguments() and Twig\ExpressionParser::parseArguments()

Commits
-------

960f6762ed Deprecate Twig\ExpressionParser::parseOnlyArguments() and Twig\ExpressionParser::parseArguments()
2025-01-24 14:36:45 +01:00
Fabien Potencier 960f6762ed Deprecate Twig\ExpressionParser::parseOnlyArguments() and Twig\ExpressionParser::parseArguments() 2025-01-23 08:35:56 +01:00
omarius 498fb5da4c Fixing minor typo in Update inline_css.rst 2025-01-22 13:51:54 +01:00
Fabien Potencier 3e93e91f59 Finish the work 2025-01-12 18:48:43 +01:00
Lorenz c4fd25fad5 fix indentation 2025-01-12 18:46:05 +01:00
Lorenz Schäfer dacbe51b3a Apply suggestions from code review
Co-authored-by: Fabien Potencier <fabien@potencier.org>
2025-01-12 18:46:05 +01:00
Lorenz Schäfer 2b95bd6092 typo
Co-authored-by: Christian Flothmann <christian.flothmann@gmail.com>
2025-01-12 18:46:05 +01:00