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 ответа
Это была проблема пути и пространства имен:
Путь для контроллера должен быть:
/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
Добавление singlepage
перед тем, как контроллер будет установлен, вы сможете без предупреждения отсоединить его от контроллера, попробуйте удалить его и снова добавить.