Php 使用短端名称codeigniter加载视图
用于减少my$data变量中视图的类型。我希望视图能够获取公共/文件名,而不是将完整的长度和相同的内容绑定到if语句中 库或自定义库中是否有一个函数可以实现这一点?我只是不想将完整视图名称仅放在foldername/file的最后一个片段中Php 使用短端名称codeigniter加载视图,php,codeigniter,Php,Codeigniter,用于减少my$data变量中视图的类型。我希望视图能够获取公共/文件名,而不是将完整的长度和相同的内容绑定到if语句中 库或自定义库中是否有一个函数可以实现这一点?我只是不想将完整视图名称仅放在foldername/file的最后一个片段中 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Home extends CI_Controller { public functi
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Home extends CI_Controller {
public function index(){
$data['column_left'] = $this->load->view('common/column_left');
$data['column_right'] = $this->load->view('common/column_right');
$data['content_top'] = $this->load->view('common/content_top');
$data['content_bottom'] = $this->load->view('common/content_bottom');
$data['footer'] = $this->load->view('common/footer');
$data['header'] = $this->load->view('common/header');
if(file_exists('template/common/home.tpl')) { // can't get it to pick up file in theme
$this->load->view('template/common/home.tpl', $data);
} else {
$this->load->view('default/template/common/home.tpl', $data); // theme
}
}
}
您可以使用自定义库
。这是我以前回答中的一般提示。你可以根据需要改变。您可以通过控制器
或配置
传递主题
创建一个名为template.php的新库文件,并编写一个名为load\u template的函数。在该函数中,使用上述代码
public function load_template($view_file_name,$data_array=array()) {
$ci = &get_instatnce();
$ci->load->view("header");
$ci->load->view($view_file_name,$data_array);
$ci->> load->view("footer");
}
您必须在配置文件夹中的自动加载文件中加载此库所以您不想在所有控制器中加载。
你可以这样做
$this->template->load_template("index");
如果要将日期传递给查看文件,则可以通过$data_数组发送。是!这是(一种实现此功能的方法),通过MY_Controller.php(in/application/core/)扩展控制器
应该是这样的
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Controller extends CI_Controller {
protected $data = Array();
public function __construct() {
parent::__construct();
$this->output->enable_profiler(FALSE);
}
public function _render() { //as I understand now you dont need parameter
$template['column_left'] = $this->load->view('common/column_left', '', TRUE);
$template['column_right'] = $this->load->view('common/column_right', '', TRUE);
$template['content_top'] = $this->load->view('common/content_top', '', TRUE);
$template['content_bottom'] = $this->load->view('common/content_bottom', '', TRUE);
//$this->load->view($view_file, $this->data);
$template['footer'] = $this->load->view('common/footer', '', TRUE);
$template['header'] = $this->load->view('common/header', '', TRUE);
if(file_exists('template/common/home.tpl')) {
$this->load->view('template/common/home.tpl', $template);
} else {
$this->load->view('default/template/common/home.tpl', $template);
}
}
}
使用_render()很简单
无论何时需要渲染页面,只需执行$this->_render()代码>没有,没有。你必须自己编写你自己的库(或助手)。我希望仍能像上面这样做if语句只需要一个。希望能够使用if语句,如果可能的话,试着像我得到的那样让它变得更容易这就是你不将任何数据传递给视图吗?(另请参见我编辑了我的答案以满足您的需要)好的,我刚刚决定放弃Codeigniter,但它并没有真正起作用。不让我做我想做的事。
class Home extends MY_Controller {