我想为整个codeigniter项目创建一个默认布局。 (像cakephp)
我还需要将值从数据库(通过控制器)传递到默认布局。
我该怎么做?
答案 0 :(得分:1)
您可以考虑使用模板系统。例如Template library
答案 1 :(得分:1)
您可以使用钩子来实现此目的
post_controller - 您可以使用此设置变量。
在控制器完全执行后立即调用。
display_override - 您可以覆盖显示并包含您自己的视图 覆盖_display()函数,用于在系统执行结束时将最终页面发送到Web浏览器。这允许您使用自己的显示方法。请注意,您需要使用$ this-> CI =& amp;来引用CI超级项目。 get_instance()然后通过调用$ this-> CI-> output-> get_output()
来获得最终数据答案 2 :(得分:1)
CodeIgniter wiki是寻找此类帮助的好地方。
例如,这里有four different approaches来实现您想要的目标。
答案 3 :(得分:1)
实际上你可以使用一个非常简单的解决方案。这是我在 CodeIgniter 中使用布局编写的微型库:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Layout {
protected $CI;
public function __construct() {
$this->CI =& get_instance();
}
/**
* This method loads either the default layout (defined in the config.php file with the key default_layout) or a specific layout
* @param string $view
* @param array $params
* @param string $layout
*/
public function load_layout($view, $params = array(), $layout = "") {
// get the name of the layout file
$layout_file = file_exists(dirname(__FILE__) . "../views/" . $layout) ? $layout : $this->CI->config->item("default_layout");
// load it, transmit the params
$this->CI->load->view(
$layout_file,
array(
"view_name" => $view,
"view_params" => $params
)
);
}
?>
在 Layout.php 文件中将此文件添加到项目中,然后转到配置文件并添加以下行:
$config['default_layout'] = "your-default-layout-name.php";
最后在项目的 application / views 文件夹中创建一个新文件,并将其命名为您放入配置文件的值,即 your-default-layout-name.php 。粘贴页面基本结构的所有内容并添加到主包装器中:
<?php
// load required view
if (isset($view_name)) {
$this->load->view(
$view_name, $view_params
);
}
?>
好的!现在你可以简单地替换原生:
$this->load->view("view-name.php", $params);
by:
// load the default layout
$this->layout->load_layout("view-name.php", $params);
// load a specific layout
$this->layout->load_layout("view-name.php", $params, "my-specific-layout.php");
它会像魅力一样发挥作用!
注意:不要忘记在您的autoload.php文件中或直接在您的脚本中包含该库。