Bonjour,
Je suis les tutos creer un site de a à z et je suis au jour 5, j'ai un probleme avec le tableau d'options pour creer le formulaire, il est vide alors que j'envois bien des options.
Voici mes codes;
Form.php:
<?php
class Form{
public $controller;
public function __construct($controller){
$this->controller = $controller;
//debug($this->controller); die();
}
public function input($name,$label,$options = array()){
debug($options); die(); // vide je comprends pas :(
if(!isset($this->controller->request->data->$name)){
$value = '';
}else{
$value = $this->controller->request->data->$name;
}
if($label == 'hidden'){
return '<input type="hidden" name="'.$name.'" value="'.$value.'">';
}
$html ='<div class="clearfix form-group row">
<label for="input'.$name.'" class="col-sm-2 col-form-label">'.$label.'</label>
<div class="input col-sm-4">';
$attr = ' ';
foreach($options as $k=>$v){
if($k != 'type'){
$attr .= " $k=\"$v\"";
}
}
if(!isset($options['type'])){
$html .= '<input id="input'.$name.'" type="text" name="'.$name.'" value="'.$value.'" class="form-control" '.$attr.'>';
}elseif($options['type'] == 'textarea'){
$html .= '<textarea rows="7" id="input'.$name.'" name="'.$name.'" class="form-control" '.$attr.'>'.$value.'</textarea>';
}elseif($options['type'] == 'checkbox'){
$html .= '<div class="form-check">
<input type="hidden" name="'.$name.'" value="0">
<input class="form-check-input" type="checkbox" id="input'.$name.'" name="'.$name.'" value="1">
<label class="form-check-label" for="input'.$name.'">
Mettre en ligne
</label>
</div>';
}
$html .= '</div></div>';
return $html;
}
}
PostsController:
<?php
class PostsController extends Controller{
function index(){
$perPage = 1;
$this->loadModel('Post');
$condition = array(
'type'=>'post',
'online' => '1'
);
$d['posts'] = $this->Post->find(array(
'conditions' => $condition,
'limit' => ($perPage * ($this->request->page - 1)).','.$perPage
));
$d['total'] = $this->Post->findCount($condition);
$d['page'] = ceil($d['total'] / $perPage);
$this->set($d);
}
function view($id,$slug){
$this->loadModel('Post');
$d['post'] = $this->Post->findFirst(array(
'fields' => 'id,slug,content,name',
'conditions' => array(
'id'=>$id,
'type'=>'post',
'online' => '1')
));
if(empty($d['post'])){
$this->e404('Page introuvable');
}
if($slug != $d['post']->slug){
$this->redirect("posts/view/id:$id/slug:".$d['post']->slug,301);
}
$this->set($d);
}
/**
* ADMIN
*/
function admin_index(){
$perPage = 10;
$this->loadModel('Post');
$condition = array('type'=>'post');
$d['posts'] = $this->Post->find(array(
'fields' => 'id,name,online',
'conditions' => $condition,
'limit' => ($perPage * ($this->request->page - 1)).','.$perPage
));
$d['total'] = $this->Post->findCount($condition);
$d['page'] = ceil($d['total'] / $perPage);
$this->set($d);
}
/**
* Permet d'éditer un article
*/
function admin_edit($id = null){
$this->loadModel('Post');
//debug($this->request->data); die();
if($this->request->data){
$this->Post->save($this->request->data);
$id = $this->request->data->id;
}
if($id){
$this->request->data = $this->Post->findFirst(array(
'conditions' => array('id'=>$id)
));
}
}
/**
* Permet de supprimer un article
*/
function admin_delete($id){
$this->loadModel('Post');
$this->Post->delete($id);
$this->Session->setFlash('Le contenu a bien été supprimer.');
$this->redirect('admin/posts/index');
}
}
admin_edit.php
<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('name','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')); ?>
<?php echo $this->Form->input('online','En ligne',array('type'=>'checkbox','rows'=>5)); ?>
<div class="actions">
<input type="submit" class="btn btn-primary" value="Envoyer">
</div>
</form>
Si quelqu'un sait me mettre sur la voie ... ce serait cool.
Merci.