模板platesphp错误,为什么我有一个未定义的变量错误

时间:2017-08-08 08:22:56

标签: php class templates model-view-controller plates

试用platesphp模板引擎。我在他们的网站上按照示例的指示包括了platephp类,并在我的index.php上创建了一个板块实例

的index.php

require 'plates/vendor/autoload.php';

// Create new Plates instance
$templates = new League\Plates\Engine('catalog/view/template/', 'tpl');

include 'catalog/controller/Home.php';
$home = new Home();
$home->index();

默认控制器/家庭控制器位于不同的文件夹app>controller>Home.php(MVC)。

这就是我现在在家庭控制器中所拥有的(这是一个虚拟控制器,不是生产就绪,但检查我是否可以应用phpplates)

class Home
{
    public function index(){

    // Preassign data to the layout
    $templates->addData([
    'page_title' => 'site title here',
    'page_description' => 'site description here',
    'page_keywords' => 'keywords here'
], 'common/layout');

    // Render a template
    echo $templates->render('product/home');
    }
}

模板是一个tpl文件,位于app>view>templates

现在,问题是当我运行代码时出现错误,表示

  

注意:未定义的变量:模板中   C:\ xampp \ htdocs \ tryingPlates \ catalog \ controller \ Home.php在线   15

     

致命错误:在null中调用成员函数addData()   C:\ xampp \ htdocs \ tryingPlates \ catalog \ controller \ Home.php在线   15

并且HomeController上的第15行是

 $templates->addData([
    'page_title' => 'site title here',
    'page_description' => 'site description here',
    'page_keywords' => 'keywords here'
], 'common/layout');

我的理解是,HomeController中的$ templates未定义,但我已经在index.php中定义了它

// Create new Plates instance
$templates = new League\Plates\Engine('catalog/view/template/', 'tpl');

为什么这么乱。请帮忙。

0 个答案:

没有答案