web-dev-qa-db-ja.com

非オブジェクトのプロパティを取得しようとしています-CodeIgniter

更新フォームを作成しようとしています。選択した特定のIDのデータを取得し、フォームに入力するので、更新に使用できるようになります。

特定のエントリ(私の場合はProduct)で[編集]をクリックすると、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はすべてのキーと値のペアを保持する配列ですが、何らかの理由でフォームに入力できません。

前もって感謝します!

22
Marko Aleksić

配列内の要素にアクセスするには、配列表記を使用します:$product['prodname']

$product->prodnameはオブジェクト表記法で、オブジェクトの属性とメソッドにアクセスするためにのみ使用できます。

56
Orbit

値を取得するには:

$query = $this->db->query("YOUR QUERY");

次に、(コントローラー内の)from from single row:

$query1 = $query->row();
$data['product'] = $query1;

ビューでは、独自のコード(上記のコード)を使用できます

7
shike

私の場合、XMLファイルの一連のオブジェクトをループしていましたが、一部のインスタンスは明らかにエラーの原因であったオブジェクトではありませんでした。オブジェクトを処理する前にオブジェクトが空であったかどうかを確認することで問題が修正されました。

つまり、オブジェクトが空かどうかをチェックせずに、スクリプトは空のオブジェクトでエラーを出力します。エラーは次のとおりです。

非オブジェクトのプロパティを取得しようとしています

例:

if (!empty($this->xml_data->thing1->thing2))
{
   foreach ($this->xml_data->thing1->thing2 as $thing)
   {

   }
}
3
Ben Wilson