Есть ли способ сделать шаблон, но не визуализировать его в пластинах PHP

Есть ли способ в php пластин, где я могу сделать шаблон в контроллере, но сделать его с помощью другого контроллера. Скажем, у меня есть два контроллера. HeaderController и SearchController.

SearchController

class Search extends \system\core\BaseController
{
    public function Index()
    {
        $data['text_search'] = 'Search..';

        // This $this->template->render down below is what I don't want now
        // okay asign the data but do not display the template yet
        echo $this->template->render('common/search', $data);
    }
}

Фиктивный SearchController должен назначить $data для шаблона search.tpl, но не отображать / отображать шаблон.

Это где я буду называть вышеупомянутый контроллер

HeaderController

class HeaderController extends \system\core\BaseController
{
    public function Index()
    {
        // Some codes

        // Call / load the SearchController and asign it to $data['search'] 
        $data['search'] =  $this->load->controller('common/SearchController');

        // and then pass all $data and render/display it.
        echo $this->template->render('common/header', $data);
    }
}

Есть ли способ сделать это?

1 ответ

Решение

На самом деле проблема заключается в том, что вы используете echo в вашем классе. Если ваши "контроллеры" (ну, на самом деле они кажутся комбинацией зрения и контроллера) были return либо содержание, либо Response экземпляр класса, тогда ваша проблема должна исчезнуть.

Другие вопросы по тегам