0

私は現在、smartyテンプレートにクラスを持たせることに取り組んでいます。

私が取ってやったら:

$smarty = new Smarty;
$smarty->setTemplateDir('../smarty/templates');

テンプレートディレクトリが「/smarty/ templates」に設定されるので、クラスで同じことをしようとしています。

class Template extends Smarty
{
    function __construct()
    {
        parent::__construct();
        $this->template_dir = "../smarty/templates/";
        $this->compile_dir = "../smarty/templates_c/";
    }
}

だから私は簡単に言うことができます:

$smarty = new Template;

そうすれば、使用するすべてのページでテンプレートのディレクトリを宣言する必要がありません。

エラー:

Fatal error: Uncaught exception 'SmartyException' with message
'Unable to load template file 'home.tpl'' in
/home/content/p/i/e/piec5762/html/alex/school/assets/php/smarty/sysplugins
/smarty_internal_templatebase.php:127
Stack trace:
#0
/home/content/p/i/e/piec5762/html/alex/school/assets/php/smarty/sysplugins
/smarty_internal_templatebase.php(374):
Smarty_Internal_TemplateBase->fetch('home.tpl', NULL, NULL, NULL,
true)
#1
/home/content/p/i/e/piec5762/html/alex/school/index.php(40):
Smarty_Internal_TemplateBase->display('home.tpl')
#2
{main} thrown in
/home/content/p/i/e/piec5762/html/alex/school/assets/php/smarty/sysplugins
/smarty_internal_templatebase.php on line 127

私はファイルを持っています:

index.php - where I'm making the object "$smarty"
assets/php/templates.php - where class Template
assets/smarty/templates - where I need to set the directory to
assets/php/smarty - where all my smarty files are

これはこれと同じです:PHP Smartyシングルトンクラスを拡張しますが、より単純で相対パスを歌います

自分のクラスでtemplate_dirを設定するにはどうすればよいですか?

4

1 に答える 1

1

エラーに続いて更新されました。あなたが関係しているようですindex.phpので、そうあるべきです:

class Template extends Smarty {
  function __construct() {
    parent::__construct();
    $this->setTemplateDir("./smarty/templates/");
    $this->setCompileDir("./smarty/templates_c/");
    }
  }

そして、パスセーフになりたい場合:

class Template extends Smarty {
  function __construct() {
    parent::__construct();
    $this->setTemplateDir(__DIR__."/../smarty/templates/");
    $this->setCompileDir(__DIR__."/../smarty/templates_c/");
    }
  }

__DIR__現在のファイル(つまり、templates.phpテンプレートクラス)ディレクトリはどこにありますか

于 2013-03-09T05:18:46.290 に答える