Ответ 1
Чтобы получить доступ к элементам в массиве, используйте нотацию массива: $product['prodname']
$product->prodname
- это объектная нотация, которая может использоваться только для доступа к атрибутам и методам объекта.
Я пытаюсь создать форму для обновления, которая будет извлекать данные для выбранного идентификатора и заполнить форму, поэтому она будет доступна для обновления.
Когда я нажимаю "Редактировать" на конкретной записи ( "Продукт в моем случае" ), он переносит меня в 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 файла, но некоторые из экземпляров, по-видимому, не были объектами, которые вызывали ошибку. Проверяя, был ли объект пуст до его обработки, исправлена проблема.
Другими словами, не проверяя, был ли объект пустым, script будет выходить из строя на любом пустом объекте с ошибкой "Попытка получить свойство не-объекта"
например.
if (!empty($this->xml_data->thing1->thing2))
{
foreach ($this->xml_data->thing1->thing2 as $thing)
{
}
}