Concrete5 5.7:将变量从Controller传递给View

时间:2015-04-25 12:06:55

标签: concrete5 concrete5-5.7

所以我在一个单页下制作了一个仪表板:

/application/single_pages/dashboard/newsletter.php

/application/single_pages/dashboard/view.php

控制器位于:

/Concrete/controllers/single_pages/dashboard/newsletter.php

控制器看起来像:

<?php
namespace Concrete\Controller\SinglePage\Dashboard;
use Concrete\Core\Multilingual\Page\PageList;
use \Concrete\Core\Page\Controller\DashboardPageController;
class Newsletter extends DashboardPageController {
    public function view() {
        $testVar = array(
            'one' => 'some',
            'two' => 'value',
            'three' => 'foo',
            'four' => 'bar'
        );
        $this->set('test', $testVar);
    }
}

/application/single_pages/dashboard/newsletter.php看起来像:

<?php defined('C5_EXECUTE') or die("Access Denied.");
echo 'something';
print_r($test);

/application/single_pages/dashboard/view.php看起来像:

<?php defined('C5_EXECUTE') or die("Access Denied.");

问题:

本地变量$test未显示在视图中。

echo 'something';正在显示,所以基本上该页面已启动并正在运行。 我做错了什么?

2 个答案:

答案 0 :(得分:2)

这是一条路径&amp;命名空间问题:

控制器的路径必须是:

/application/controllers/single_page/dashboard/newsletter.php

而不是:

/concrete/controllers/single_pages/dashboard/newsletter.php

对于控制器路径,其单数为single_page,但对于单页本身,其复数为single_pages

从核心扩展时,我们需要调整命名空间:

Application\Controller\SinglePage\Dashboard

而不是:

Concrete\Controller\SinglePage\Dashboard

答案 1 :(得分:0)

在控制器到位之前添加singlepage将导致它在没有警告的情况下与控制器分离,尝试将其删除并重新添加。