J'essaie de créer un formulaire de mise à jour, qui va récupérer les données pour l'ID spécifique sélectionné et le remplir, afin qu'il soit disponible pour la mise à jour.
Lorsque je clique sur modifier sur l'entrée spécifique (Produit dans mon cas), cela me mène à la edit_product_view
, mais indique l’erreur "Essayer d’obtenir une propriété de non-objet" pour chaque variable que j’utilise dans set_values
des éléments de formulaire.
En utilisant print_r
, Je reçois le tableau associatif correct, donc il est passé correctement.
Ceci est extrait de mon 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
est le tableau contenant toutes les paires clé-valeur, mais je ne peux pas remplir le formulaire pour une raison quelconque.
Merci d'avance!
Pour accéder aux éléments du tableau, utilisez la notation tableau: $product['prodname']
$product->prodname
est la notation d'objet, qui ne peut être utilisée que pour accéder aux attributs et méthodes d'objet.
Pour obtenir la valeur:
$query = $this->db->query("YOUR QUERY");
Ensuite, pour une seule ligne à partir de (dans le contrôleur):
$query1 = $query->row();
$data['product'] = $query1;
Dans la vue, vous pouvez utiliser votre propre code (code ci-dessus)
Dans mon cas, je parcourais une série d'objets à partir d'un fichier XML, mais certaines des instances n'étaient apparemment pas des objets à l'origine de l'erreur. Vérifier si l'objet était vide avant le traitement corrigeait le problème.
En d'autres termes, sans vérifier si l'objet était vide, le script générerait une erreur sur n'importe quel objet vide avec l'erreur indiquée ci-dessous.
Essayer d'obtenir une propriété de non-objet
Par exemple:
if (!empty($this->xml_data->thing1->thing2))
{
foreach ($this->xml_data->thing1->thing2 as $thing)
{
}
}