2011-06-19 78 views
1

前段時間我給庫添加了一些參數,它工作得很好......我不知道我是否搞砸了一些配置設置或什麼,現在我不能傳遞完全相同的參數。Codeigniter庫參數

圖書館模板:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

    class Template { 

     public $config = array(); 



     public function __construct($params = NULL) 
     { 

       echo '<pre>'; print_r($params); echo '</pre>'; 
       /*This should print the array (and it's printing nothing): 

       Array 
       (
        [menus] => Array 
         (
          [Administradores] => index 
          [Logs] => logs 
         ) 

       )*/ 

      if ($params){ 
       foreach ($params as $key => $value){ 
        $this->config[$key] = $value; 
       } 
      } 

     } 

     public function cms_template($pagina=NULL, $modulo=NULL, $titulo=NULL, $data=NULL, $dir='backoffice') 
     { 
      $CI =& get_instance(); 
      $CI->load->library('session'); 
      if (isset($this->config['menus'])) 
       $menus = $this->config['menus']; 
      else 
       $menus=NULL; 

      $dados['dados'] = array(
       'id_administrador' => $CI->session->userdata('id_administrador'), 
       'email' => $CI->session->userdata('email'), 
       'nome' => $CI->session->userdata('nome'), 
       'modulo' => $modulo, 
       'titulo' => $titulo, 
       'menus' => $menus 
      ); 

      $CI->load->view($dir.'/topo', $dados); 
      $CI->load->view($dir.'/'.$pagina, $data); 
      $CI->load->view($dir.'/rodape');  
     } 

控制器:

public function __construct() { 
     parent::__construct(); 
     $this->auth_model->verificaLogin('id_administrador','backoffice/login'); 
     $this->load->model('administradores_model'); 
     $params=array(
      'menus' => array(
       'Administradores'=>'index', 
       'Logs'=>'logs' 
      ) 
     ); 

     $this->load->library('template', $params); 
    } 

當我運行它,它引發了我n錯誤的觀點:

<?php 
      foreach ($dados['menus'] as $key => $value) { 
       echo '<li>'.active_anchor('/'.$this->uri->segment(1).'/'.$this->uri->segment(2).'/'.$value, $key, '/'.$this->uri->uri_string()).'</li>'; 
      } 
      ?> 

一個PHP遇到錯誤

嚴重性:警告

消息:爲提供的foreach ()

+0

$ dados ['dados']? –

+0

你是對的,我沒有注意到我使用了相同的單詞,但實際上它工作正常並且不影響返回的數據,所以問題不在那裏。但謝謝你指出我。現在已經糾正了。 – AFRC

+0

如果不是使用'foreach($ dados as $ key => $ value)'而不是'$ dados ['menus']'會發生什麼? –

回答

0

關於爲什麼自動加載這個庫就停止工作,你的最後一個註釋無效的說法!

這與CodeIgniter無關,但PHP限制。可能有一個名字conflit! 我不確定,但請記住,PHP有一個限制,你的類必須有一個唯一的名稱。我不知道如果「模板」是一個CI保留名稱,但嘗試一個不同的名字!如果是這種情況來解決它,你必須有一個很好的命名方案,這就是爲什麼CI使用後綴和前綴。或名稱空間,但CI不支持它!

希望這個提示幫助!

+0

嗨@heldrida有沒有conflit。這很簡單:如果你想傳遞參數給庫,你不能自動加載它。 – AFRC