web-dev-qa-db-fra.com

Essayer d'obtenir une propriété de non-objet - CodeIgniter

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!

22
Marko Aleksić

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.

56
Orbit

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)

7
shike

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)
   {

   }
}
3
Ben Wilson