【发布时间】:2011-06-19 22:20:53
【问题描述】:
前段时间我向库中添加了一些参数,它工作得很好......我不知道我是否搞砸了一些配置设置或什么,现在我无法传递完全相同的参数。
库模板:
<?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);
}
当我运行它时,它会在视图上抛出一个错误:
<?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()
【问题讨论】:
-
你是对的,我没有注意到我使用了同一个词,但实际上它确实工作正常并且它不影响返回的数据,所以问题不存在。但谢谢你指出我。现在已经更正了。
-
如果你只使用
$dados['menus']而不是foreach($dados as $key=>$value)会发生什么? -
啊,没关系,别修了。现在尝试向该行添加一些跟踪:
$menus=NULL; -
$menus=NULL可以变成$dados['menus']和NULL在foreach中不起作用。请改用$menus=array()。 -
感谢大家的帮助。 Jorge:我在该数组中有更多数据,它会打印出应该显示的内容,但是 $data['menus'] 为空或为空。 hakre:这停止了错误,但它仍然是空的。我认为问题出在这一行:
$this->load->library('template', $params);无论我在 $params var 中传递什么,它都无法进入库。这很奇怪,因为我已经有几天没有碰过这段代码了,而且我很确定它曾经在某个时候工作过。我必须在其他文件中更改某些内容。有人知道吗?
标签: php class codeigniter