2013-05-02 63 views
0

我在使用模板显示视图时遇到问题。 我的模板看起来是这样的:CI模板 - 元素显示在错误的位置

<?php 
$this->load->view('includes/header'); 

if($this->session->userdata('is_loggedin')!=1) //check if logged in 
{ 
    $this->load->view('includes/not_loggedin'); //includes this when not logged in 
} 
else //includes all this when is logged in 
{ 
    if(isset($content)) //check if content variable isnt empty 
    { 
     $this->load->view($content); //THIS IS MY CONTENT WHIC IS DISPLAYED IN WRONG POS 
    } 
    $this->load->view('includes/is_loggedin'); // 
} 

$this->load->view('includes/footer'); 
?> 

到错误的位置,我的意思是我的形式被显示在顶部左侧角落的HTML结构之外。这是检查元素窗口的副本。注意div所在的位置;头标是空的;并且,头部信息在体内。

<html lang="en"> 
<head></head> //head tags are empty 
<body> 
<div id="settings">...</div> //this is my loaded div 
<meta charset="utf-8"> 
<title>Sludinājumu lapa</title> //head info outside tags 
<link href="/assets/css/style.css" type="text/css" rel="stylesheet"> 
<div id="wrapper">....</div> //i need settings div inside wrapper div 
</body> 
</html> 

没有加载该视图,HTML结构很好。此外,将is_loggedin和not_logged加载到视图中也没有问题。

我的头包含:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="utf-8"> 
<title>Sludinājumu lapa</title> 
<link rel="stylesheet" type="text/css" href="/assets/css/style.css"> 
</head> 
<body> 
<div id="wrapper"> 

而页脚包含:

<foter> 
<p>developed by kriss</p> 
</foter> 
</div> //End of "wrapper" div 
</body> 
</html> 

从我传递的数据是这样的控制器:

$data['content'] = $this->load->view('vchangeinfo'); 
    $this->load->view('template', $data); 

任何想法,为什么一切搞砸了吗?

回答

0

两个这样做的方法:

Codeigniter views

加载它提前(像你这样做),并传递给其他视图

还有第三个可选参数,可以改变函数的行为,使其以字符串形式返回数据,而不是将其发送到浏览器。如果您想以某种方式处理数据,这可能很有用。如果将该参数设置为true(布尔值),它将返回数据。默认行为是false,将其发送到您的浏览器。请记住,它分配给一个变量,如果你想返回的数据:

// the "TRUE" argument tells it to return the content, rather than display it immediately 
$data['content'] = $this->load->view('vchangeinfo', NULL, TRUE); 
$this->load->view ('template', $data); 

// View 

if(isset($content)) //check if content variable isnt empty 
{ 
    $this->load->view($content); 
    // OR don't know wich one works. 
    // echo $content; 
} 

装载“从内部”景观的看法:

<?php 
// Controller 
$this->load->view('template'); 

<?php 
// Views : /application/views/template.php 
$this->view('vchangeinfo'); 
+0

是的,谢谢。 echo $ content正在工作,因为如果我加载视图$ this-> load-> view($ content);所有视图UNDER这行代码不工作,但上面的所有视图加载罚款.....奇怪为什么... – Merkley 2013-05-03 09:06:35

+0

也许因为你使用了两次$ this-> load-> view($ content) ; 一次在控制器中,另一次在视图中。 (不确定,但可以解释) – Simon 2013-05-03 12:33:38