search
HomeBackend DevelopmentPHP TutorialUsage and example analysis of PHP template engine Smarty custom variable mediator

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)

<?php
  define(&#39;ROOT_PATH&#39;, dirname(__FILE__)); //设置网站根目录
  require ROOT_PATH.&#39;/libs/Smarty.class.php&#39;; //加载 Smarty 模板引擎
  $_tpl = new Smarty(); //创建一个实例对象
  $_tpl->template_dir = ROOT_PATH.&#39;/tpl/&#39;; //设置模板文件目录
  $_tpl->compile_dir = ROOT_PATH.&#39;./com/&#39;; //设置编译文件目录
  $_tpl->left_delimiter = &#39;<{&#39;; //设置左定界符
  $_tpl->right_delimiter = &#39;}>&#39;; //设置右定界符
?>

index.php(main file)

<?php
  define(&#39;CONST_VAR&#39;, &#39;ABC&#39;);
  require &#39;init.inc.php&#39;; //引入模板初始化文件
  global $_tpl;
  $_str = &#39;abcdEFGHigklmnOPQRSTuvwsYz&#39;; //定义一个字符串
  $_tpl->assign(&#39;str&#39;,$_str); //字符串赋值给str
  $_tpl->assign(&#39;str1&#39;,strtolower($_str)); //字符串全部转换为小写赋给str1
  $_tpl->assign(&#39;str2&#39;,strtoupper($_str)); //字符串全部转换为大写赋给str2
  $_tpl->assign(&#39;str3&#39;,ucfirst($_str)); //字符串首字母转换为大写赋给str3
  $_tpl->assign(&#39;str4&#39;,substr($_str, 0,15).&#39;...&#39;); //截取字符串前15个字符,后面的用&#39;...&#39;代替,并赋给str4
  $_tpl->assign(&#39;str5&#39;,strtoupper(substr($_str, 0,15)).&#39;...&#39;); //截取字符串前15个字符转换为大写,后面的用&#39;...&#39;代替,并赋给str4
  $_tpl->display(&#39;index.tpl&#39;); //引入模板
?>

tpl/index.tpl

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Smarty 中的变量调解器</title>
</head>
<body>
  <{$str}><br />   <!-- 输出字符串原形 -->
  <{$str1}><br />  <!-- 输出字符串转换为小写-->
  <{$str2}><br />  <!-- 输出字符串转换为大写 -->
  <{$str3}><br />  <!-- 输出字符串首字母大写 -->
  <{$str4}><br />  <!-- 截取字符串,截取15个字符串,后面的用&#39;...&#39;代替 -->
  <{$str5}><br />  <!-- 截取字符串,截取15个字符串,转换为大写,后面的用&#39;...&#39;代替 -->
  <!--
    您会发现,使用赋值过来的变量,使用起来不是很灵活,
    如果需要处理字符串,就必须得在主文件中设立一个新变量,并把值赋给这个新变量。
    使用变量调解器,可灵活的处理字符串
   -->
  <{$str|transform}><br />      <!-- 输出字符串原形-->
  <{$str|transform:"lower"}><br />  <!-- 输出字符串转换为小写-->
  <{$str|transform:"upper"}><br />  <!-- 输出字符串转换为大写 -->
  <{$str|transform:"firstdx"}><br /> <!-- 输出字符串首字母大写 -->
  <{$str|subString:0:15:"###"}><br /> <!-- 截取字符串,截取15个字符串,后面的用&#39;###&#39;代替 -->
  <{$str|subString:0:15:"@@@"|transform:"upper"}><br />  <!-- 截取字符串,截取15个字符串,后面的用&#39;@@@&#39;代替 -->
  <{$str|transform:"upper"|subString:0:15:"@@@"}><br />  <!-- 功能同上 -->
</body>
</html>

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

<?php
  /**
   * smarty_modifier_transform
   * 字符串转换的变量调解器函数
   * @param string $string 处理字符串
   * @param string $type  处理类型
   */
  function smarty_modifier_transform($string,$type) {
    switch ($type) {
      case &#39;upper&#39; :
        $str = strtoupper($string);
        break;
      case &#39;lower&#39; :
        $str = strtolower($string);
        break;
      case &#39;firstdx&#39; :
        $str = ucfirst($string);
        break;
      default:
        $str = $string;
    }
    return $str;
  }
?>

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

<?php
  /**
   * smarty_modifier_subString
   * 处理截取字符串调解器
   * @param string $string  处理字符串
   * @param int $start_num  开始位置,默认从头开始
   * @param int $end_num   结束位置,默认20
   * @param string $addTo   追加字符串,默认&#39;...&#39;
   */
  function smarty_modifier_subString($string,$start_num=0,$end_num=20,$addTo=&#39;...&#39;) {
    $_str = &#39;&#39;;
    if (strlen(substr($string, $start_num, $end_num))>=$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
Optimize PHP Code: Reducing Memory Usage & Execution TimeOptimize PHP Code: Reducing Memory Usage & Execution TimeMay 10, 2025 am 12:04 AM

TooptimizePHPcodeforreducedmemoryusageandexecutiontime,followthesesteps:1)Usereferencesinsteadofcopyinglargedatastructurestoreducememoryconsumption.2)LeveragePHP'sbuilt-infunctionslikearray_mapforfasterexecution.3)Implementcachingmechanisms,suchasAPC

PHP Email: Step-by-Step Sending GuidePHP Email: Step-by-Step Sending GuideMay 09, 2025 am 12:14 AM

PHPisusedforsendingemailsduetoitsintegrationwithservermailservicesandexternalSMTPproviders,automatingnotificationsandmarketingcampaigns.1)SetupyourPHPenvironmentwithawebserverandPHP,ensuringthemailfunctionisenabled.2)UseabasicscriptwithPHP'smailfunct

How to Send Email via PHP: Examples & CodeHow to Send Email via PHP: Examples & CodeMay 09, 2025 am 12:13 AM

The best way to send emails is to use the PHPMailer library. 1) Using the mail() function is simple but unreliable, which may cause emails to enter spam or cannot be delivered. 2) PHPMailer provides better control and reliability, and supports HTML mail, attachments and SMTP authentication. 3) Make sure SMTP settings are configured correctly and encryption (such as STARTTLS or SSL/TLS) is used to enhance security. 4) For large amounts of emails, consider using a mail queue system to optimize performance.

Advanced PHP Email: Custom Headers & FeaturesAdvanced PHP Email: Custom Headers & FeaturesMay 09, 2025 am 12:13 AM

CustomheadersandadvancedfeaturesinPHPemailenhancefunctionalityandreliability.1)Customheadersaddmetadatafortrackingandcategorization.2)HTMLemailsallowformattingandinteractivity.3)AttachmentscanbesentusinglibrarieslikePHPMailer.4)SMTPauthenticationimpr

Guide to Sending Emails with PHP & SMTPGuide to Sending Emails with PHP & SMTPMay 09, 2025 am 12:06 AM

Sending mail using PHP and SMTP can be achieved through the PHPMailer library. 1) Install and configure PHPMailer, 2) Set SMTP server details, 3) Define the email content, 4) Send emails and handle errors. Use this method to ensure the reliability and security of emails.

What is the best way to send an email using PHP?What is the best way to send an email using PHP?May 08, 2025 am 12:21 AM

ThebestapproachforsendingemailsinPHPisusingthePHPMailerlibraryduetoitsreliability,featurerichness,andeaseofuse.PHPMailersupportsSMTP,providesdetailederrorhandling,allowssendingHTMLandplaintextemails,supportsattachments,andenhancessecurity.Foroptimalu

Best Practices for Dependency Injection in PHPBest Practices for Dependency Injection in PHPMay 08, 2025 am 12:21 AM

The reason for using Dependency Injection (DI) is that it promotes loose coupling, testability, and maintainability of the code. 1) Use constructor to inject dependencies, 2) Avoid using service locators, 3) Use dependency injection containers to manage dependencies, 4) Improve testability through injecting dependencies, 5) Avoid over-injection dependencies, 6) Consider the impact of DI on performance.

PHP performance tuning tips and tricksPHP performance tuning tips and tricksMay 08, 2025 am 12:20 AM

PHPperformancetuningiscrucialbecauseitenhancesspeedandefficiency,whicharevitalforwebapplications.1)CachingwithAPCureducesdatabaseloadandimprovesresponsetimes.2)Optimizingdatabasequeriesbyselectingnecessarycolumnsandusingindexingspeedsupdataretrieval.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use