Я пытаюсь создать форму для обновления, которая будет извлекать данные для выбранного идентификатора и заполнить форму, поэтому она будет доступна для обновления.
Когда я нажимаю «Редактировать» на конкретной записи («Продукт в моем случае»), она возвращает меня в 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");
Затем для одной строки из (в контроллере):
$query1 = $query->row(); $data['product'] = $query1;
В виду, вы можете использовать свой собственный код (выше кода)
В моем случае я перебирал ряд объектов из файла XML, но некоторые из них, по-видимому, не были объектами, которые вызывали ошибку. Проверяя, был ли объект пуст, перед его обработкой исправлена проблема.
Другими словами, не проверяя, был ли объект пуст, сценарий будет выходить из строя на любом пустом объекте с ошибкой «Попытка получить свойство не-объекта»,
например
if (!empty($this->xml_data->thing1->thing2)) { foreach ($this->xml_data->thing1->thing2 as $thing) { } }