试图获取非对象的属性 - CodeIgniter
Posted
技术标签:
【中文标题】试图获取非对象的属性 - CodeIgniter【英文标题】:Trying to get property of non-object - CodeIgniter 【发布时间】:2011-07-07 16:55:29 【问题描述】:我正在尝试制作更新表格,即检索所选特定 ID 的数据,并填写表格,以便更新。
当我单击特定条目(在我的例子中为产品)上的编辑时,它会将我带到 edit_product_view
,但会为每个条目声明错误“尝试获取非对象的属性”我在表单元素的set_values
中使用的变量。
使用print_r
,我得到了正确的关联数组,所以它被正确传递了。
这是我edit_product_view
的摘录。
<h2><?php echo $heading; ?></h2>
<hr>
<table id="newproduct">
<?php echo form_open('products/edit/'.$product->id); ?>
<tr>
<td class="label"><?php echo form_label('Name:');?></td>
<td><?php echo form_input('prodname', set_value('prodname', $product->prodname));?></td>
</tr>
<tr>
<td class="label"><?php echo form_label('Product Type:');?></td>
<td><?php echo form_dropdown('ptname_fk', $product_types, set_value('ptname_fk', $product->ptname_fk));?></td>
</tr>
$product
是包含所有键值对的数组,但由于某种原因我无法填写表格。
提前谢谢你!
【问题讨论】:
我可能一直很厚,弄错了你的问题,请告诉我。 【参考方案1】:要访问数组中的元素,请使用数组表示法:$product['prodname']
$product->prodname
是对象表示法,只能用于访问对象的属性和方法。
【讨论】:
不起作用。这是 print_r 输出。 'Array ( [0] => stdClass Object ( [id] => 1 [prodname] => Baked Fillo [base_unit] => 500.00 [retail_price] => 50.00 [alert_quantity] => 0.00 [ptname_fk] => 1 [pcname_fk ] => 1 [wname_fk] => 1 [uname_fk] => 1 [uname] => 克 [pcname] => Fillo [ptname] => 成品 [wname] => 成品))' 找到了解决办法!谢谢!我引用 as $product['0'] -> prodname; 啊,是的,根据数组转储,这很有意义。 我正在使用 Laravel,这也适用于那里。非常感谢 Orbit。【参考方案2】:获取值:
$query = $this->db->query("YOUR QUERY");
然后,对于来自(控制器中)的单行:
$query1 = $query->row();
$data['product'] = $query1;
在视图中,可以使用自己的代码(以上代码)
【讨论】:
【参考方案3】:在我的例子中,我从一个 XML 文件中循环了一系列对象,但其中一些实例显然不是导致错误的对象。在处理对象之前检查对象是否为空解决了问题。
换句话说,在不检查对象是否为空的情况下,脚本将在任何空对象上出错,错误如下所示。
试图获取非对象的属性
例如:
if (!empty($this->xml_data->thing1->thing2))
foreach ($this->xml_data->thing1->thing2 as $thing)
【讨论】:
以上是关于试图获取非对象的属性 - CodeIgniter的主要内容,如果未能解决你的问题,请参考以下文章