2016-09-25 52 views
1

我有從查詢的結果陣列中的控制器,比如,以查看:數據未解析使用模板呈現笨

[...]控制器/ admin.php的:

public function user_email() 
{ 
    $this->db->select('user_email'); 
    $this->db->from('user'); 
    $query = $this->db->get(); 
    $data['email'] = $query->result_array(); 

    $this->template->render('admin/user_driver', $data, 'admin'); 
} 

文庫/的template.php:

class Template { 
protected $ci; 
public $data; 

public function __construct() 
{ 
    $this->ci =& get_instance(); 
} 

public function render($view, $viewdata = null, $template = 'frontend') 
{ 
    $html = $this->ci->load->view($view, $viewdata, TRUE); 
    $this->data['template'] = $this->parse_blocks($html); 
    $this->data['_viewdata'] = $viewdata; 
    $this->ci->load->view("template/{$template}", $this->data); 
} 
public function parse_blocks($html) 
{ 
    $blocks = array(); 
if(empty($html)) $html = " "; 
libxml_disable_entity_loader(false); 
$dom = new DOMDocument; 
libxml_use_internal_errors(true); 
$dom->loadHTML($html); 
libxml_use_internal_errors(false); 
    libxml_disable_entity_loader(true); 
    foreach ($dom->getElementsByTagName('template') as $node) { 
     $section = $node -> getAttribute('block'); 
     $blocks[$section] = $this->DOMinnerHTML($node); 
    } 
    return $blocks; 
} 
private function DOMinnerHTML(DOMNode $element) 
{ 
    $innerHTML = ""; 
    $children = $element->childNodes; 

    foreach ($children as $child) 
    { 
     $innerHTML .= $element->ownerDocument->saveHTML($child); 
    } 

    return $innerHTML; 
} 
public function block_exists($blockname = NULL) 
{ 
    if(empty($blockname)) 
     return false; 

    return (is_array($this->data) && is_array($this->data['template']) && array_key_exists($blockname,$this->data['template'])); 
} 
} 

var_dump($email)user_driver.php看法,但它拋出Undefined variable: email。文件user_driver.php[...]views/admin/user_driver.php之下。

我做錯了什麼?

+0

哪個模板庫是你使用? [Phil Sturgeon's?](https://github.com/philsturgeon/codeigniter-template) – MackieeE

+0

我不確定它是什麼,因爲我被要求修改別人的代碼,我添加了我的模板代碼,以便更清晰@ MackieeE – may

+0

啊!謝謝你包括這一點,它已經明確 - 視圖數據正在重新分配=)'$ this-> data ['_ viewdata'] = $ viewdata;' – MackieeE

回答

0

數據庫中的結果當前以多維數組結果的形式返回。更改爲row如果你希望只是一個結果:

$data['email'] = $query->row_array();

這將爲您提供一個單一維數組來從:

$this->db->select('user_email'); 
$this->db->from('user'); 
$query = $this->db->get(); 
$dbresult = $query->row_array(); 
$emailAddress = $dbresult["user_email"]; 

$data['email'] = $emailAddress; 
+0

現在我越來越'未定義變量:_viewdata' :( – may

+0

@可能包括'$'?對不起!=) – MackieeE

+0

我按照你的建議,但它仍然會引發錯誤。謝謝你的幫助 – may