


Detailed explanation of how to use smarty templates in PHP based on Yii framework
The first method
It is a bit troublesome to generate views according to the YII system method, and I think it is easier to use smarty. Tried adding smarty templates.
date_default_timezone_set("PRC"); class PlaceController extends CController { protected $_smarty; function __construct(){ parent::__construct('place');//需要一个参数来调用父类的构造函数,该参数为控制器ID $path = Yii::getPathOfAlias('application');//获得protected文件夹的绝对路径 include (dirname($path).DIRECTORY_SEPARATOR.'Smarty'.DIRECTORY_SEPARATOR.'Smarty.class.php');//smarty所在路径 $this->_smarty = new Smarty(); $this->_smarty->template_dir = dirname($path).DIRECTORY_SEPARATOR.'template'.DIRECTORY_SEPARATOR;//模板路径 }
The main problem is the execution conflict of automatically loaded classes.
YII registered an autoloading class spl_autoload_register(array('YiiBase','autoload')), SMARTY also registered an autoloading class, spl_autoload_register('smartyAutoload'), YII registered first, so when encountering an When specifying a class name, YII's custom auto-loading class function is executed first. For each class name in SMARTY, YII's auto-loading class function is also called first. However, if the conditions for YII auto-loading are not met, If so, SMARTY's auto-loading class function will be executed. However, SMARTY's class name does conform to the logical statement of YII's auto-loading class when automatically loading the class. The result is that YII will definitely not be able to find the class to be included using the Include statement. arrive.
The solution is: when the SMARTY class is automatically loaded, jump out of the automatic loading function defined in YII, so that the SMARTY loading function will be executed.
The specific implementation is to modify the autoload function in the YIIBase class and add the following code
public static function autoload($className) { // use include so that the error PHP file may appear if(preg_match('/smarty/i', $className)){ //只要类名包含smarty的,无论大小写,都返回,这样就跳出了YII自动加载类而去执行 SMARTY的自动加载类函数了 return; } YII自动加载类代码 }
so that the smart template can be used in each Action.
public function actionIndex(){ $this->_smarty->assign('test', '测试'); $this->_smarty->display('create.html'); }
Put the smarty template plug-in in the extensions folder under protected and create a CSmarty class file with the following content
<?php require_once(Yii::getPathOfAlias('application.extensions.smarty').DIRECTORY_SEPARATOR.'Smarty.class.php'); define('SMARTY_VIEW_DIR', Yii::getPathOfAlias('application.views')); class CSmarty extends Smarty { const DIR_SEP = DIRECTORY_SEPARATOR; function __construct() { parent::__construct(); $this->template_dir = SMARTY_VIEW_DIR; $this->compile_dir = SMARTY_VIEW_DIR.self::DIR_SEP.'template_c'; $this->caching = true; $this->cache_dir = SMARTY_VIEW_DIR.self::DIR_SEP.'cache'; $this->left_delimiter = '<!--{'; $this->right_delimiter = '}-->'; $this->cache_lifetime = 3600; } function init() {} } ?>
Then create the template_c required by samrty , cache and other folders.
The next step is the configuration part
Open protected/config/main.php and add it to the components array
'smarty'=>array( 'class'=>'application.extensions.CSmarty', ),
Finally, use Yii::app()->smarty directly in the action to try it out Smarty now. If it is troublesome to use Yii::app()->smarty every time in the action, you can add
protected $smarty = ''; protected function init() { $this->smarty = Yii::app()->smarty; }
to the Controller under components and then use $this-> directly in the action. smarty uses smarty.
For more detailed explanations of how to use smarty templates in PHP based on the Yii framework, please pay attention to the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Alipay PHP...

Session hijacking can be achieved through the following steps: 1. Obtain the session ID, 2. Use the session ID, 3. Keep the session active. The methods to prevent session hijacking in PHP include: 1. Use the session_regenerate_id() function to regenerate the session ID, 2. Store session data through the database, 3. Ensure that all session data is transmitted through HTTPS.

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

How to debug CLI mode in PHPStorm? When developing with PHPStorm, sometimes we need to debug PHP in command line interface (CLI) mode...

The application of SOLID principle in PHP development includes: 1. Single responsibility principle (SRP): Each class is responsible for only one function. 2. Open and close principle (OCP): Changes are achieved through extension rather than modification. 3. Lisch's Substitution Principle (LSP): Subclasses can replace base classes without affecting program accuracy. 4. Interface isolation principle (ISP): Use fine-grained interfaces to avoid dependencies and unused methods. 5. Dependency inversion principle (DIP): High and low-level modules rely on abstraction and are implemented through dependency injection.

How to automatically set the permissions of unixsocket after the system restarts. Every time the system restarts, we need to execute the following command to modify the permissions of unixsocket: sudo...

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

Article discusses essential security features in frameworks to protect against vulnerabilities, including input validation, authentication, and regular updates.
