更新フォームを作成しようとしています。選択した特定の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
はすべてのキーと値のペアを保持する配列ですが、何らかの理由でフォームに入力できません。
前もって感謝します!
配列内の要素にアクセスするには、配列表記を使用します:$product['prodname']
$product->prodname
はオブジェクト表記法で、オブジェクトの属性とメソッドにアクセスするためにのみ使用できます。
値を取得するには:
$query = $this->db->query("YOUR QUERY");
次に、(コントローラー内の)from from single row:
$query1 = $query->row();
$data['product'] = $query1;
ビューでは、独自のコード(上記のコード)を使用できます
私の場合、XMLファイルの一連のオブジェクトをループしていましたが、一部のインスタンスは明らかにエラーの原因であったオブジェクトではありませんでした。オブジェクトを処理する前にオブジェクトが空であったかどうかを確認することで問題が修正されました。
つまり、オブジェクトが空かどうかをチェックせずに、スクリプトは空のオブジェクトでエラーを出力します。エラーは次のとおりです。
非オブジェクトのプロパティを取得しようとしています
例:
if (!empty($this->xml_data->thing1->thing2))
{
foreach ($this->xml_data->thing1->thing2 as $thing)
{
}
}