2010-10-28 6 views
0

i ont une forme multipage avec quelques textfields. Lorsque vous remplissez le formulaire et appuyez sur suivant le formulaire stocke les valeurs dans un objet. Lorsque vous appuyez sur la backbutton il rechargements ces valeurs dans les champs de texte. Cela fonctionne bien.php valeur par défaut et non-objet

Mais lorsque vous chargez d'abord la forme, l'objet n'est pas créé donc il n'y a rien à charger les valeurs de et je reçois un appel à une fonction de membre d'une erreur non-objet.

exemple:

<inputfield value='$object->getValue()'> 

est-il un moyen de le dire que lorsque l'objet n'existe pas laisser juste vide?

+0

Pouvez-vous montrer tout le code? Où est l'initialisation de votre objet? – pltvs

Répondre

3

Vous pouvez effectuer les opérations suivantes avant d'utiliser l'objet:

// All methods called on this object return an empty string. 
class EmptyObject { 
    public function __call($name, $args) { 
     return ''; 
    } 
} 

// Use fake object if $object is not defined correctly. 
if (!is_object($object)) { 
    $object = new EmptyObject(); 
} 

__call est un magic method en PHP. Il est invoqué chaque fois qu'une méthode non définie est appelée sur l'objet.

+0

jusqu'à maintenant ça marche, bonne astuce! – dazz

0

Il est méthode is_object:

if (is_object($object)){ 
    // it is there 
} 

vous pouvez donc vérifier quelque chose comme ceci:

<inputfield value='<?php is_object(@$object) ? $object->getValue() : '';?>'> 
1

Le est aussi une méthode isset:

if(isset($object)){ 
    //it is there 
} 
1

Essayez ceci:

$output = "<inputfield value='". (isset($object) ? $object->getValue() : '') . "'>";