mirror of
https://github.com/fenom-template/fenom.git
synced 2023-08-10 21:13:07 +03:00
Add dynamic modifier support
This commit is contained in:
parent
f6512fccfc
commit
2e4ce13c10
@ -135,21 +135,18 @@ but if use single quote any template expressions will be on display as it is
|
|||||||
### Modifiers
|
### Modifiers
|
||||||
|
|
||||||
* Модификаторы позволяют изменить значение переменной перед выводом или использованием в выражении
|
* Модификаторы позволяют изменить значение переменной перед выводом или использованием в выражении
|
||||||
* Модификаторы записываются после переменной через символ вертикальной черты "|"
|
* To apply a modifier, specify the value followed by a | (pipe) and the modifier name.
|
||||||
* Модификаторы могут иметь параметры, которые записываются через символ двоеточие ":" после имени модификатора
|
* A modifier may accept additional parameters that affect its behavior. These parameters follow the modifier name and are separated by a : (colon).
|
||||||
* Параметры модификаторов друг от друга также разделяются символом двоеточие ":"
|
|
||||||
* В качестве параметров могут использоваться переменные.
|
|
||||||
* Модификаторы могут составлять цепочки. В этом случае они применяются к переменной последовательно слева направо
|
|
||||||
|
|
||||||
```smarty
|
```smarty
|
||||||
{var $foo="User"}
|
{var $foo="User"}
|
||||||
{$foo|upper} выведет "USER"
|
{$foo|upper} outputs "USER"
|
||||||
{$foo|lower} выведет "user"
|
{$foo|lower} outputs "user"
|
||||||
{"{$foo|lower}"} выведет "user"
|
{"{$foo|lower}"} outputs "user"
|
||||||
{"User"|lower}} выведет "user"
|
{"User"|lower}} outputs "user"
|
||||||
{$looong_text|truncate:80:"..."} обрежет текст до 80 символов и добавит "..." в конец текста
|
{$looong_text|truncate:80:"..."} truncate the text to 80 symbols and append <continue> symbols, like "..."
|
||||||
{$looong_text|lower|truncate:$settings.count:$settings.etc}
|
{$looong_text|lower|truncate:$settings.count:$settings.etc}
|
||||||
{var $foo="Ivan"|upper} переменная $foo будет содержать "USER"
|
{var $foo="Ivan"|upper} sets $foo value "USER"
|
||||||
```
|
```
|
||||||
|
|
||||||
[List of modifiers](./main.md#modifiers)
|
[List of modifiers](./main.md#modifiers)
|
||||||
|
@ -571,7 +571,7 @@ class Compiler {
|
|||||||
* Standard function parser
|
* Standard function parser
|
||||||
*
|
*
|
||||||
* @static
|
* @static
|
||||||
* @param $function
|
* @param mixed $function
|
||||||
* @param Tokenizer $tokens
|
* @param Tokenizer $tokens
|
||||||
* @param Template $tpl
|
* @param Template $tpl
|
||||||
* @return string
|
* @return string
|
||||||
|
@ -844,7 +844,8 @@ class Template extends Render {
|
|||||||
*/
|
*/
|
||||||
public function parseModifier(Tokenizer $tokens, $value) {
|
public function parseModifier(Tokenizer $tokens, $value) {
|
||||||
while($tokens->is("|")) {
|
while($tokens->is("|")) {
|
||||||
$mods = $this->_cytro->getModifier( $tokens->getNext(Tokenizer::MACRO_STRING) );
|
$mods = $this->_cytro->getModifier( $modifier_name = $tokens->getNext(Tokenizer::MACRO_STRING) );
|
||||||
|
|
||||||
$tokens->next();
|
$tokens->next();
|
||||||
$args = array();
|
$args = array();
|
||||||
|
|
||||||
@ -870,12 +871,18 @@ class Template extends Render {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if($args) {
|
if(is_string($mods)) { // dynamic modifier
|
||||||
$value = $mods.'('.$value.', '.implode(", ", $args).')';
|
$mods = 'call_user_func($tpl->getStorage()->getModifier("'.$modifier_name.'"), ';
|
||||||
} else {
|
} else {
|
||||||
$value = $mods.'('.$value.')';
|
$mods .= "(";
|
||||||
|
}
|
||||||
|
if($args) {
|
||||||
|
$value = $mods.$value.', '.implode(", ", $args).')';
|
||||||
|
} else {
|
||||||
|
$value = $mods.$value.')';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// var_dump($value); exit;
|
||||||
return $value;
|
return $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user