有没有一种方法可以制作模板但不在盘子中渲染它 php

is there a way to make template but not render it in plates php

plates php 中有没有一种方法可以让我在控制器中制作模板,但使用另一个控制器渲染它。假设我有两个控制器。 HeaderController 和一个 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 而不是 render/display 模板。

这是我调用上述控制器的地方

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);
    }
}

有办法吗?

问题实际上是因为您在 class 中使用了 echo。如果您的 "controllers"(嗯,它们实际上似乎是视图和控制器的组合)是 return 内容或 Response class 实例,那么您的问题应该消失.