0

我有这段代码,当我使用 mydomain/index.php/blog 调用该函数时,一切正常,但在这种情况下,内容(即“索引”)显示在页面顶部。我希望它显示在我在我的 CSS 中定义的内容区域中。有什么问题?

<?php
    class Blog extends CI_Controller{

        public function __construct(){
            parent::__construct();
        }

        public function index(){

            $this->load->view('template/header');
            echo "index";
            $this->load->view('template/footer');
        }

    }
    ?>
4

2 回答 2

2

在 CodeIgniter 中有两种方法可以向浏览器显示输出。使用 CI 视图并回显数据。该echo命令会立即执行,因此它位于页面顶部。该load->view方法在输出库的 CI 中执行 - 因此它不会完全按照您的 echo 语句的顺序执行。

我想说为您的内容创建另一个视图,然后像这样调用所有视图:

$data = array('content_html' => 'index');
$this->load->view('template/header');
$this->load->view('template/content', $data);
$this->load->view('template/footer');

您的内容视图可能只是回显content_html变量:

// views/template/content.php
echo $content_html;

或者,您可以控制控制器中的内容(尽管这不是最好的想法):

$header = $this->load->view('template/header', array(), TRUE);
$footer = $this->load->view('template/footer', array(), TRUE);

echo $header;
echo "index";
echo $footer;

TRUE作为第三个参数传递给该load->view方法将视图作为字符串返回,而不是将其输出到浏览器 - 允许您控制输出。

于 2013-01-03T18:06:44.230 回答
1

如果您想在内容区域中显示数据

<?php
    class Blog extends CI_Controller{

        public function __construct(){
            parent::__construct();
        }

        public function index(){
            $data['content'] ='Your content';   
            $this->load->view('template/header');
            $this->load->view('template/content_template',$data);                
            $this->load->view('template/footer');
        }

    }
    ?>

并为内容创建一个单独的模板文件,并将此代码粘贴到您的内容文件中。

<?php
print $content; 
?>

另请参阅此网址 http://ellislab.com/codeigniter/user-guide/general/views.html

于 2013-01-03T18:11:18.983 回答