bonjour, j'ai commencé récemment le tutoriel "création d'un site web de A à Z" mais au jour 5, j'ai un probleme avec mon Form.php.
voila mon code:
<?php
class Form{
public $controller;
public function __construct($controller){
$this->controller = $controller;
}
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'){
$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;
}
}
et voici l'erreur que j'ai:
Notice: Trying to get property of non-object in C:\Users\Danny\Documents\siteweb local\EasyPHP-5.3.8.1\www\site_ppo\core\Form.php on line 13, 26 et 28(là où il y a ma variable"$this->controller->request->data->$name").
j'aimerais savoir pourquoi cela s'affiche et comment le corrigé.
Merci
Ok j'ai trouvé le problème: c'est que dans l'URL, c'était suposé être marquer ".../cockpit/posts/edit/(id)" mais à la place il y avais cela: ".../cockpit/posts/edit/". Donc, il ne reconnaissait pas l.id, donc il ne pouvais pas aller chercher les informations dans la bdd.
Hello, essaye de virer le $ sur le $name.
Dans les objets, les propriétés ne prennent pas de $
ex :
$this->controller->nom = $nom;
Essaye de trouver pour caser quelque part :
$this->controller->request->data->name = $name;
ça t'aidera surement ;)
OK.... bon, j'ai un peu plus attentivement regardé le code... faut que je regarde la vidéo car j'ai pas envie de dire de connerie ;)
Mais à la suite de :
public $controller;
tu pourrais mettre :
public $controller;
public $request;
public $data;
j'ai essayé mais cela ne marche toujours pas. Je crois que cela est du au fait qu'il ne reconnait pas "$this->controller->request->data->$name", ou bien qu'il n'y en a pas d'entrée. Aurais-tu une autre solution à me proposer??