Bonjour,
Je suis un grand débutant!!
J'arrive faire un lien avec
echo $this->Html->link($v'Category']'name'] ,$v'Category']'link']);
Simplement j'ai fait une fonction comme ceci
function sous_menu($tableau){
?><ul><?php
foreach($tableau as $k => $v){
?><li><?php
echo $v'Category']'post_count'];
echo $this->Html->link($v'Category']'name'] ,$v'Category']'link']);
if(is_array($v'children']) && !empty($v'children'])){
sous_menu($v'children']);
}
?></li><?php
}
?></ul><?php
}
le $this->Html... me génère une erreur et je ne vois pas comment résoudre ce problème.
J'ai essayé de passer le $this dans ma fonction
function sous_menu($tableau,$this){}
sous_menu($array,$this);
mais rien y fait.
Pouvez-vous m'aiguiller?
merci
Hello,
Dans mon élément /View/Elements/monelement.ctp
Je me demandais à l'instant si je ne dois pas faire en Helper du genre /View/Helper/MonelementHelper.php ?
J'ai suivi un tuto sur les date, et il a créé un DateHelper.php, mais je ne me souviens plus trop comme ca été fait
<?php
class DateHelper extends AppHelper{
public $days = array('Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche');
public $months = array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
function french($datetime){
$timestamp = strtotime($datetime);
$date = $this->days[date('N',$timestamp)-1]." ".date('d',$timestamp)." ".$this->months[date('m',$timestamp)-1]." ".date('Y',$timestamp);
$date .= " à ".date('H:i',$timestamp);
return $date;
}
}
La dedand il y a un $this qui est dans une fonction...
Chais pas trop..
Et si tu fais :
Dans ton élement:
<ul><?php
foreach($tableau as $k => $v){
?><li><?php
echo $v'Category']'post_count'];
echo $this->Html->link($v'Category']'name'] ,$v'Category']'link']);
if(is_array($v'children']) && !empty($v'children'])){
sous_menu($v'children']);
}
?></li></ul>
Et dans ta vue:
echo $this->Element('sous-menu',array('tableau' => $array));
Ou la j'ai rein compris :o)
J'ai pas de vue.
En fait j'essaye d'afficher des categories et j'essaye de contruire les sous-catégoire. Je n'ai pas de vue pour ca
Dans mon template j'ai deja ca
echo $this->element('categoriesList',array(),array('cache'=> array('config'=>'week')));
@pierrot =>
Dans cet exemple, on est dans un helper, qui est une classe comprenant une variable days et une variable mounth (+ tout ce qui est hérité de la classe mère AppHelper ici)
Le $this référence à la classe dans laquelle on se trouve.
En faisant $this->mounth , on accède à la variable mounth de la classe.
En faisant $this->mounth , on accède à la variable mounth de la classe.
Ha oui, c'est juste. Donc je laisse tombe le Helper....
Attends je viens avec plus d'explication
Voici le code complet de mon element
categoryList.ctp
<?php
function subMenu($tableau){
?><ul><?php
foreach($tableau as $k => $v){
?><li><?php
echo $v'Category']'post_count'];
//echo $v'Category']'name'];
echo $this->Html->link($v'Category']'name'] ,$v'Category']'link']);
if(is_array($v'children']) && !empty($v'children'])){
sunMenu($v'children']);
}
?></li><?php
}
?></ul><?php
}
?>
<div class="panel panel-default">
<!-- Default panel contents -->
<div class="panel-heading">Category</div>
<?php
// Ici je recupere le donnée du controller de l'action categorylist
$categories = $this->requestAction(array(
'controller'=>'categories',
'action' =>'categoriesList',
'admin' =>false
),
array('pass' => array('dog'))
);
?>
<?php
//debug($categories);
?>
// Ici j'affiche mon menu, Ca fonction. Sauf depuis que j'ai créé la fonction
<ul class="list-group">
<?php foreach($categories as $k => $v): ?>
<li class="list-group-item">
<span class="badge"><?php echo $v'Category']'post_count']; ?></span>
<?php echo $this->Html->link($v'Category']'name'] ,$v'Category']'link']); ?>
<?php
if(is_array($v'children']) && !empty($v'children'])){
subMenu($v'children']);
}
?>
</li>
<?php endforeach; ?>
</ul>
</div>
Si, dans ma fonction, je décommente
//$v'Category']'name']
et je commente, la ligne suivant. Mon menu s'affiche très bien. Sauf que j'aimerais avoir mes liens :o)
Voilà :o)
VOilà, mais je pense pas que c'est le problème, quoi je pense...
array(
(int) 0 => array(
'Category' => array(
'id' => '25',
'name' => 'Root',
'lft' => '1',
'rght' => '16',
'parent_id' => '0',
'slug' => 'categories',
'post_count' => '0',
'link' => array(
'controller' => 'posts',
'action' => 'category',
'slug' => 'categories'
)
),
'children' => array(
(int) 0 => array(
'Category' => array(
'id' => '26',
'name' => 'Publications',
'lft' => '2',
'rght' => '9',
'parent_id' => '25',
'slug' => 'publications',
'post_count' => '1',
'link' => array(
'controller' => 'posts',
'action' => 'category',
'slug' => 'publications'
)
),
'children' => array(
(int) 0 => array(
'Category' => array(
'id' => '29',
'name' => 'Article',
'lft' => '5',
'rght' => '6',
'parent_id' => '26',
'slug' => 'article',
'post_count' => '0',
'link' => array(
'controller' => 'posts',
'action' => 'category',
'slug' => 'article'
)
),
'children' => array()
),
(int) 1 => array(
'Category' => array(
'id' => '28',
'name' => 'Books',
'lft' => '3',
'rght' => '4',
'parent_id' => '26',
'slug' => 'book',
'post_count' => '1',
'link' => array(
'controller' => 'posts',
'action' => 'category',
'slug' => 'book'
)
),
'children' => array()
),
(int) 2 => array(
'Category' => array(
'id' => '30',
'name' => 'Poster',
'lft' => '7',
'rght' => '8',
'parent_id' => '26',
'slug' => 'posters',
'post_count' => '0',
'link' => array(
'controller' => 'posts',
'action' => 'category',
'slug' => 'posters'
)
),
'children' => array()
)
)
),
(int) 1 => array(
'Category' => array(
'id' => '27',
'name' => 'Researches',
'lft' => '10',
'rght' => '15',
'parent_id' => '25',
'slug' => 'researches',
'post_count' => '0',
'link' => array(
'controller' => 'posts',
'action' => 'category',
'slug' => 'researches'
)
),
'children' => array(
(int) 0 => array(
'Category' => array(
'id' => '32',
'name' => 'Actived',
'lft' => '13',
'rght' => '14',
'parent_id' => '27',
'slug' => 'actived',
'post_count' => '0',
'link' => array(
'controller' => 'posts',
'action' => 'category',
'slug' => 'actived'
)
),
'children' => array()
),
(int) 1 => array(
'Category' => array(
'id' => '31',
'name' => 'Unactived',
'lft' => '11',
'rght' => '12',
'parent_id' => '27',
'slug' => 'unactived',
'post_count' => '0',
'link' => array(
'controller' => 'posts',
'action' => 'category',
'slug' => 'unactived'
)
),
'children' => array()
)
)
)
)
)
)
Si je modifie ma fonction ainsi, ca marche bien:
function subMenu($tableau){
?><ul><?php
foreach($tableau as $k => $v){
?><li><?php
echo $v'Category']'post_count'];
echo $v'Category']'name'];
if(is_array($v'children']) && !empty($v'children'])){
subMenu($v'children']);
}
?></li><?php
}
?></ul><?php
}
ca m'affiche ca :
Root
Ok j'ai résolu mon problème avec un Helper, finalement.
Voir la 3ème réponse
Merci pour tout