facebook twitter hatena line email

「Php/Smarty/smarty5」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(smarty4から5へ)
(use必須)
行43: 行43:
  
 
  use Smarty\Smarty;
 
  use Smarty\Smarty;
 +
 +
==templateで、escapeが使えない対応==
 +
 +
 +
エラー詳細
 +
Fatal error: Uncaught Smarty\CompilerException: Syntax error in template "<h2>{{$message|escape:'html'}}</h2>" unknown modifier 'escape' in /
 +
対応
 +
$this->setPluginsDir([
 +
                    APPLICATION_PATH . '/../library/smarty-5.8.0/plugins'
 +
                ]);
 +
 +
plugins/modifier.escape.php
 +
<pre>
 +
<?php
 +
/**
 +
* Smarty escape modifier
 +
* Usage: {$var|escape:'html'}
 +
*/
 +
function smarty_modifier_escape($string, $type = 'html')
 +
{
 +
    switch ($type) {
 +
        case 'html':
 +
            return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
 +
        case 'url':
 +
            return rawurlencode($string);
 +
        default:
 +
            return $string;
 +
    }
 +
}
 +
</pre>

2026年4月5日 (日) 07:35時点における版

smarty5のダウンロード

https://github.com/smarty-php/smarty/releases/tag/v5.8.0

smarty4から5へ

setterへ

修正前

$smarty->cache_dir = '/path/to/cache';
$smarty->template_dir = '/path/to/templates';
$smarty->compile_dir = '/path/to/templates_c';
$smarty->left_delimiter = '{{';
$smarty->right_delimiter = '}}';

修正後

$smarty->setCacheDir('/path/to/cache');
$smarty->setTemplateDir('/path/to/templates');
$smarty->setCompileDir('/path/to/templates_c');
$smarty->setLeftDelimiter('{{');
$smarty->setRightDelimiter('}}');

getterへ

修正前

$smarty->template_dir;
$smarty->compile_dir;
$smarty->cache_dir;
$smarty->left_delimiter;
$smarty->right_delimiter;

修正後

$smarty->getTemplateDir();
$smarty->getCompileDir();
$smarty->getCacheDir();
$smarty->getLeftDelimiter();
$smarty->getRightDelimiter();

use必須

new Smartyなどで、Smartyを使ってる箇所に以下を追加

use Smarty\Smarty;

templateで、escapeが使えない対応

エラー詳細

Fatal error: Uncaught Smarty\CompilerException: Syntax error in template "

テンプレート:$message

" unknown modifier 'escape' in /

対応 $this->setPluginsDir([

                   APPLICATION_PATH . '/../library/smarty-5.8.0/plugins'
               ]);

plugins/modifier.escape.php

<?php
/**
 * Smarty escape modifier
 * Usage: {$var|escape:'html'}
 */
function smarty_modifier_escape($string, $type = 'html')
{
    switch ($type) {
        case 'html':
            return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
        case 'url':
            return rawurlencode($string);
        default:
            return $string;
    }
}