Home  >  Article  >  Backend Development  >  Usage and example analysis of PHP template engine Smarty custom variable mediator

Usage and example analysis of PHP template engine Smarty custom variable mediator

墨辰丷
墨辰丷Original
2018-06-04 09:29:321320browse

This article mainly introduces the usage of the PHP template engine Smarty custom variable mediator. It analyzes the usage of the smarty variable mediator and the implementation skills of the custom variable mediator in more detail. Friends who need it can refer to it

In PHP, there are many functions for processing text. You can process the text to be processed through the function, then call assign() in the Smarty template engine to assign the value to a variable, and assign it to the template for display.

The variable mediator in Smarty is similar to the text processing function in PHP, but the syntax is different. In Smarty, it is directly followed by the mediator function name through "|". If there are parameters, It must be added after ":". If there are multiple parameters, just add them up.

Format: {$var|modifier1:"Parameter1":"Parameter2":Parameter3|modifier2|modifier3|...}

Define the moderator The file must be placed in Smarty, the specific path is: libs/plugins/. The file name must be in the format of Smarty modifier.mediatorname.php

The following demonstrates the use of custom variable moderators in Smarty through an example

Programming idea: Make two variables The function of the mediator is: one to convert text; one to intercept text.

init.inc.php(Smarty initialization file)

template_dir = ROOT_PATH.'/tpl/'; //设置模板文件目录
  $_tpl->compile_dir = ROOT_PATH.'./com/'; //设置编译文件目录
  $_tpl->left_delimiter = '<{'; //设置左定界符
  $_tpl->right_delimiter = '}>'; //设置右定界符
?>

index.php(main file)

assign('str',$_str); //字符串赋值给str
  $_tpl->assign('str1',strtolower($_str)); //字符串全部转换为小写赋给str1
  $_tpl->assign('str2',strtoupper($_str)); //字符串全部转换为大写赋给str2
  $_tpl->assign('str3',ucfirst($_str)); //字符串首字母转换为大写赋给str3
  $_tpl->assign('str4',substr($_str, 0,15).'...'); //截取字符串前15个字符,后面的用'...'代替,并赋给str4
  $_tpl->assign('str5',strtoupper(substr($_str, 0,15)).'...'); //截取字符串前15个字符转换为大写,后面的用'...'代替,并赋给str4
  $_tpl->display('index.tpl'); //引入模板
?>

tpl/index.tpl




Smarty 中的变量调解器

<{$str}>
<{$str1}>
<{$str2}>
<{$str3}>
<{$str4}>
<{$str5}>
<{$str|transform}>
<{$str|transform:"lower"}>
<{$str|transform:"upper"}>
<{$str|transform:"firstdx"}>
<{$str|subString:0:15:"###"}>
<{$str|subString:0:15:"@@@"|transform:"upper"}>
<{$str|transform:"upper"|subString:0:15:"@@@"}>

/libs/plugins/modifier.transform.php(Transform File Modifier )

lib/plugins/modifier.subString.php(Interception text modifier)

=$end_num) {
      $_str = substr($string, $start_num, $end_num).$addTo;
    } else {
      $_str = substr($string, $start_num, $end_num);
    }
    return $_str;
  }
?>

Execution results:

Through the above example, it is shown that the mediator file must be placed under Smarty’s plug-in directory plugins, and the naming must follow Smarty’s rules, so , the mediator function you wrote can be called. Another point to note is that the defined function name must also comply with Smarty's default naming rules, for example: smarty_modifier_XXX, and a modifier file can only contain one function, not multiple.

Summary: The above is the entire content of this article, I hope it will be helpful to everyone's study.

Related recommendations: The definition and usage of the htmlentities() function in

php

PHP Methods and simple examples of generating verification codes that can be clicked to refresh

phpDetailed explanation of how to generate a QR code that can be logged in by scanning with the Android client

The above is the detailed content of Usage and example analysis of PHP template engine Smarty custom variable mediator. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn