ci3에서는
application>core 경로에 MY_Loader 파일 만들어서 정의한다음
컨트롤러에서
$this->load->tile('base','main.php',$data); 와 같은 형식으로 불러왔습니다
<?php
//예시
class MY_Loader extends CI_Loader {
protected $_tilesets = array(); // 타일을 정의함.
protected $_ci_interface_paths = array(); // 인터페이스를 정의함
protected $_ci_abstract_paths = array(); // 추상클래스를 정의함
function __construct() {
parent::__construct();
$this->_tilesets = array(
'base' => array(
'base' => 'tiles/base/base',
'header' => 'tiles/base/header',
'footer' => 'tiles/base/footer',
),
'adm' => array(
'base' => 'tiles/adm/base',
'header' => 'tiles/adm/header',
'footer' => 'tiles/adm/footer',
)
);
$this->_ci_interface_paths = array(APPPATH, BASEPATH);
$this->_ci_abstract_paths = array(APPPATH, BASEPATH);
}
function tile($tileset = 'base', $view, $vars = array(), $return_flag = false) {
$vars['header'] = $this->view($this->_tilesets[$tileset]['header'], $vars, true);
$data['content'] = $this->view($view, $vars, true);
return $this->view($this->_tilesets[$tileset]['base'], $data, $return_flag);
}
그런데 ci4에서는 core란 경로 자체가 없어지고 내용도 전혀 달라서 어떻게 해야할지 감이 안 잡히는데
어디에 정의해서 위의 문법처럼 로드할 수 있을까요?
public function index()
{
echo view('header');
echo view('main');
echo view('bottom');
}
이런식으로 불러올 수 있겠지만 매번 공통부분을 써주는 건 비효율적인거 같아서요 ㅠㅠ
controller>BaseController에
public function tiles(string $page, array $data)
{
echo view('header');
echo view($page, $data);
echo view('bottom');
}
같이 작성하니까 정상 작동되긴 하는데 config>services 쪽에 정의 하는게 좋을까요?