Slaut,
j'ai un probléme lors de affichage des articles pour la modification dans la view admin_index (http://localhost/Site/cockpit/posts/index)
il n'y a d'affichage des article seulement que le nombre de article et aussi ni les liens de suppression ou de édition
voici mon code
<div class="page-header">
<h1><?php echo $total; ?> Article</h1>
</div>
<table>
<thead>
<tr>
<th>ID</th>
<th>Titre</th>
<th>Content</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<?php foreach ($posts as $k => $v):?>
<tr>
<td><?php echo $v->id; ?> </td>
<td><?php echo $v->name; ?> </td>
<td>
<a href="<?php echo Router::url('admin/posts/edit/'.$v->id); ?>">Editer</a>
<a href="<?php echo Router::url('admin/posts/delete/'.$v->id); ?>">Supprimer</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
merci en avence
Tu t'es trompé:
'limit'=>($perPage*$this->request->page=1).','.$perPage
Devient:
'limit'=>($perPage*($this->request->page - 1)).','.$perPage
Bonjour
Je ne comprend pas vraiment la question mais ma première observation est celle ci : 4 fois <th> et 3 fois <td>. Je ne pense vraiment pas que ça soit le problème mais tu peux toujours essayer. Ta variable $posts est probablement vide, tu pourrais voir si debug($posts) te retourne null. Peut-être que tu as mal envoyé la variable à partir de ton controlleur ? À toi de voir maintenant. :-)
Bonne chance.
Ramz.
Salut,
@ Ramzz1994 Si je fais debug($posts); aprés le tableau
C:\wamp1\www\Site\View\posts\admin_index.php l .30
C:\wamp1\www\Site\Core\Controller.php l.32
C:\wamp1\www\Site\Core\Dispatcher.php l.19
C:\wamp1\www\Site\Webroot\index.php l.10
Array
(
)
si dans le tableau rien ne change (c'est a dire dan la boucle ) aucun affichage
aidez moi svp
Tu dois mal récupérer tes articles montre nous le controller correspondant il faut que tu stockes le tout dans un tableau et que tu l'envoie à la vue avec la fonction set. Admettons un tableau $d'posts'] tu fais un $this->set($d); pour envoyer à la vue tout le tableau $d.
Chaque indice sera convertis en variable dans la vue la variable $posts sera donc définis.
Si tu fais un debug($this) tu verras ce qui est disponible dans la vue.
@Ramz: Avoir 4 Th et 3 TD ne posera aucun problème au niveau php... ni même récupération du contenu c'est du simple html de base pour faire des tableaux s'il y a moins de TD que de TH il y aura décalage des colonnes tout simplement donc un problème d'affichage mais rien de plus.
voici mon controller.php
<?php
class Controller{
public $request;
private $vars= array( );
public $layout='default';
private $rendered=false;
function __construct($request=null){
if($request){
$this->request=$request;
}
}
public function render($view)
{
if($this->rendered){return false;}
extract($this->vars);
if(strpos($view, '/')===0){
$view= ROOT.DS.'view'.$view.'.php';
}else{
$view= ROOT.DS.'view'.DS.$this->request->controller.DS.$view.'.php';
}
ob_start();
require($view);
$content_for_layout=ob_get_clean();
require ROOT.DS.'view'.DS.'layout'.DS.$this->layout.'.php';
$this->rendered=true;
}
public function set($key ,$value=null){
if(is_array($key)){
$this->vars +=$key;
}else{
$this->vars$key]=$value;
}
}
function loadModel($name)
{
$file=ROOT.DS.'model'.DS.$name.'.php';
require_once($file);
if(!isset($this->$name))
{
$this->$name= new $name();
}
}
//Permet de gerer les erreur 404
function e404($message){
header("http://1.0 404 Not Found");
$this->set('message',$message);
$this->render('/error/404');
die();
}
//permet d'appler un controller de puis une view
function request($controller,$action){
$controller .='Controller';
require_once ROOT.DS.'Controller'.DS.$controller.'.php';
$c=new $controller;
return $c->$action();
}
function redirect($url,$code = null){
if($code==301){
header("HTTP/1.1 301 Moved Permanently");
}
header("location: ". Router::url($url));
}
}
?>
Je parlais du controller gérant l'administration pas du controller principal qui lui met à disposition des fonctions ;) .
@Xtr3me dans la première fois j'ai 2 article dans ma base de donneés le lien /Site/cockpit/posts/index affiche seulement un seul article aprés la suppression de l'article je tombe dans se problémm d'affichage
rq: rien changé dans la vue admin_index
Je vais pas pouvoir t'aider sans le code approprié... ensuite si tu n'as qu'un article sur les deux regardes du côté du type dans la bdd.
<?php
class PostsController extends Controller{
function index(){
$perPage=1;
$this->loadModel('Post');
$condition=array('online'=>'1','type'=>'post');
$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');
$condition=array('online'=>'1','id'=>$id,'type'=>'post');
$d'post']=$this->Post->findFirst(array(
'fields'=>'id,slug,content,name',
'conditions'=>$condition));
if(empty($d'post'])){
$this->e404('Page Introvable');
}
//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 de suprimer un article
function admin_delete($id){
$this->loadModel('Post');
$this->Post->delete($id);
$this->redirect('admin/posts/index');
}
}
?>
Si je mettre $perPage=1; il m'affiche que un seul article mais mois j'ai 3 article si je change par 10 aucun affichage
Exactement Xtr3me aussi mon système de pagination fonction trés bien a ci pour grand merci pour vous ++++++
De rien ;) .
Quand tu as un problème qui change de comportement par rapport à la valeur d'une variable, vérifie toutes les lignes où cette variable est utilisé, simple conseil pour débugger.