voici le code de la classe "form". des erreurs au niveau des input apparaissent (' Trying to get property of non-object '). Je suis débutante en php et j'ai besoin de l'aide . merci .
<?php
class Form
{
public $controller;
public function __construct($controller){
$this->controller=$controller;
// debug($this->controller->request);
}

public function input($name,$label,$options=array()){
if ($label == 'hidden') {
return '<input type="hidden" name="'.$name.'" value="'.$this->controller->request->data->$name.'" >';

}
$html='<div class="clearfix" >
<label for="input'.$name.'">'.$label.'</label>
<div class="input">';

$attr=' ';
foreach ($options as $k => $v) {
if ($k!='type') {

code...

$attr .= " $k=\"$v\"";
}
}
if (!isset($options'type'])) {
$html .='<input type="text" id="input'.$name.'" name="'.$name.'" value="'.$this->controller->request->data->$name.'" '.$attr.'>';
}elseif ($options'type']=='textarea') {

$html .='<textarea id="input'.$name.'" name="'.$name.'"'.$attr.' >'.$this->controller->request->data->$name.'</textarea>';
}elseif ($options'type']=='checkbox') {

$html .='<input type="hidden" name="'.$name.'" value="0" ><input type="checkbox" name="'.$name.'" value="1">';
}
$html .='<div></div>';
return $html;

}
}

4 réponses


djtec
Réponse acceptée

L'erreur est explicite Trying to get property of non-object , il te dit que tu essaye d'atteindre une propriété en objet et que ce n'est pas un objet.

Tu fais: $this->controller->request->data->$name
Et je pense plus que tu devrais faire: $this->controller->request->data$name]

Peux-tu argumenter un peu plus ?

souvenir
Auteur

l'edition de l'article se fait mais avec des erreurs au niveau de la classe form . en fait je suis entrain de suivre le tuto de AàZ et là je me bloque .
<div class="page-header">
<h1>Editer Un Article</h1>
</div>

<form action ="<?php echo Router::url('admin/posts/edit'); ?>" method="post">
<?php echo $this->Form->input('title','Titre') ;?>
<?php echo $this->Form->input('slug','Url') ;?>
<?php echo $this->Form->input('id','hidden'); ?>
<?php echo $this->Form->input('content','Contenu',array('type'=>'textarea','class'=>'xxlarge','rows'=>5,'cols'=>10)); ?>
<?php echo $this->Form->input('onlin','En ligne',array('type'=>'checkbox')); ?>
<div class="actions">
<input type="submit" class="btn primary" value="Envoyer" />

</div>
</form>

souvenir
Auteur

Je vous remercie infinement pour votre aide. Le problème est bien resolue chers amis . djetec vous avez raison .