2012-12-05 63 views
0

从可变开始生成的视图称为$数据,这是一个关联数组,其包括一个对象,并且其打印的值是这样的:笨:没有在某种情况下

Array 
(
    [item] => stdClass Object 
     (
      [id] => 1 
      [tipo] => 0 
      [idioma] => es 
      [nombre] => Artí­culo de prueba 
      [titulo] => Esto es un artí­culo de prueba 
      [alias] => articulo-de-prueba 
      [texto] => Lorem ipsum etc etc 
      [url] => 
      [video] => 
      [fecha_c] => 2012-11-27 10:50:37 
      [fecha_m] => 2012-11-27 17:00:00 
      [fecha_p] => 2012-11-28 00:00:00 
      [destacado] => 0 
      [status] => 1 
     ) 

    [imagenes] => Array 
     (
     ) 

) 

我需要过滤其值并将其分配给另一个数组,这种方式:

protected function load_form($data = '') { 
     $this->load->helper('form'); 

     // If item data have been sent, pass it to the form view to edit it. 
     // Else display empty form for new item. 
     if (! empty($data)) { 
      // Data can be an associative array with an object and another array or just an object   
      if (array_key_exists('item', $data)) { 
       $this->_vars['item'] =& $data['item']; 
      } 
      else { 
       $this->_vars['item'] =& $data; 
      } 
      if (array_key_exists('imagenes', $data)) { 
       $this->_vars['imagenes'] = $data['imagenes']; 
      } 
     } 

     $view = $this->load->view(ADMIN_FORMS_PATH . $this->_controller . '_form', $this->_vars, true); 

     /*DEBUG*/ echo $view; // just for debugging purposes 
} 

第一分配产生这些错误:

一个PHP错误遇到严重性:通知消息:未定义指数: 项目文件名:核心/ Admin_Controller.php行号:205

一个PHP错误遇到严重性:通知消息: 类的对象stdClass的不能转换成int文件名: 核心/ Admin_Controller.php行号:205

它像项目索引不存在,它的作用。此外,它会尝试将该对象转换为整数。

为什么会发生这种情况,应该怎么做才能解决这个问题?

编辑:

我是做& =代替= &。这是错误的原因。

无论如何,问题仍然存在,代码似乎停止。

EDIT2:

正在试图重新定义的问题。它可能与CodeIgniter有关,所以我添加了整个函数,包括CodeIgniter函数。

load_form()方法可以从创建新项目的请求中调用,在这种情况下$ data是空的,或者是从编辑给定项目(在$ data中)的请求中调用。在第一种情况下(创建),执行调试行,但不执行第二种情况(版本)。

+1

你能告诉我们Admin_Controller.php的第205行吗? –

+0

@Fabio:第205行是第一项任务:$ this - > _ vars ['item'] =&data ['item']; –

+0

是否存在'$ this - > _ vars'并且它是一个数组? – sierrasdetandil

回答

0

问题解决了。这太简单了。

它在视图内。我试图回声:

$项[ 'ID']

代替

$用品 - > ID

项数据被检索为对象,不是一个数组。它无声无息地造成了问题,没有任何警告,注意或错误。

无论如何,我感谢您的快速帮助。

0

这可能是你的问题。在最后你有“$ datos ['imagenes'];”它应该是“$ data ['imagenes'];”

if (! empty($data)) { 
    // Data can be an object, or an array with object + array of images    
    if (array_key_exists('item', $data)) { 
     $this->_vars['item'] &= $data['item']; 
    } 
    else { 
     $this->_vars['item'] = $data; 
    } 
    if (array_key_exists('imagenes', $data)) { 
     $this->_vars['imagenes'] = $data['imagenes']; 
    } 
} 
+0

对不起,这只是一个错字。这不是真正的问题。为了清楚起见,我简单地将$ datos更改为$ data。我刚刚纠正了它。 –

相关问题