Есть ли способ в тарелки 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);
}
}
Есть ли способ сделать это?
На самом деле проблема заключается в том, что вы используете echo
в вашем классе. Если ваши «контроллеры» (ну, на самом деле они кажутся комбинацией зрения и контроллера) были return
либо содержание, либо Response
экземпляр класса, тогда ваша проблема должна исчезнуть.
Других решений пока нет …