Bonjour tous le monde ,</br> Je suis un détbutant sur cakephp et j'ai rencontré un problème assez bizard sur un projet sur lequel je travaille actuellement.</br>
Le projet consiste à créer un site de cuisine avec plusieur recettes etc... </br>Un utilisateur peut accéder au site par deux maniére :
</br> 1/normale sans s'y connecter et donc peut voir les recettes voir leur classement par rapport leur note global et en rechercher par rapport au nom de la recettes ou par rapport au aliments utiliser dans celle-ci.</br>
2/En se connectant avec un username et un password et dans ce cas il aura en plus la possibilité de noter les recettes , de les ajouter au panier des favories et de voir/modifier son profil.
</br>
Le probléme que je rencontre en ce moment ce situe au niveau des views. en effet tous marche comme il le faut sauf pour 2 choses :
</br>1/ Je n'arrive pas à récupérer l'id de l'utilisateur dans les vues d'un autre controller que celles de UsersController. En effet la fontion "AuthComponent::user('id')" me retourne toujours null sur ses vues.
</br>2/ Pour la recherche des recettes on a 2 façons sois par le nom des recettes sois par les aliments utiliser dans les recettes et je dois afficher ses aliments sous une structure d'arbre et mon problème est qu'en fait cakephp plante et m'affiche cette erreur : " Maximum execution time of 30 seconds exceeded" !!!! Et je ne sais pas pourquoi !!!!
Voici les codes que j'ai réalisé et excuser moi si j'ai massacrer cake je ne suis q'un débutant :D :</br>
UsersController fonction login :</br>
function login(){
$this->layout='conreg';
if($this->request->is('post'))
{
if(!empty($this->request->data))
{
if($this->Auth->login())
{
$this->Session->setFlash("Bienvenue dans LC",'notif' );
$this->redirect(array('controller' => 'accueils'));
}
else
{
$this->Session->setFlash("Erreur de connection",'notif');
}
}
else
{
$this->Session->setFlash("Merci de saisir vos informations",'notif');
}
}
}
Le header du template ou j'ai besoin de l'id de utilisateur :
<?php
if(AuthComponent::user('id')){
?>
<ul class="li_con">
<li id="head_con"><a href="http://localhost/Recette/Users/login"><?= $resultats['User']['username']; ?></a></li>
<li id="head_ins"><a href="http://localhost/Recette/">S'inscrire</a></li>
<li id="head_rech"><a href="#">Favorie</a></li>
</ul>
<?php }else{ ?>
<ul class="li_con">
<li id="head_con"><a href="http://localhost/Recette/Users/login">Connexion</a></li>
<li id="head_ins"><a href="http://localhost/Recette/Users/register">S'inscrire</a></li>
<li id="head_rech"><a href="#">Favorie</a></li>
</ul>
<?php } ?>
Code du AppController:
public $components =array('Session','Cookie','Auth');
public function beforeFilter()
{
$this->Auth->allow('login','register','recherche','top','index');
}
Code de RecettesController pour le deusiéme probléme:
function recherche(){
$id=1;
$cmpt=1;
//debug(AuthComponent::user('id'));
$arbre1=$this->chercherfils($id,$cmpt);
$arbre='<ul>'.$arbre1.'</ul>';
echo $arbre ;
}
function chercherfils($id,$cmpt){
$arbre='';
$recherchefil=$this->requestAction('/AlimentsAliments/recherchefils/'.$id);
if(!empty($recherchefil)){
$nom=$this->requestAction('/Aliments/recherchenom/'.$id);
if($nom!=''){
$arbre2='<li>
<input type="checkbox" id="c"'.$cmpt.' />
<i class="fa fa-angle-double-right"></i>
<i class="fa fa-angle-double-down"></i>
<label for="c1"> '.$nom.'<a href="">
<i class="fa fa-folder-open"></i></a></label>
<ul>';
}else{
$arbre2='<li>
<input type="checkbox" id="c"'.$cmpt.' />
<i class="fa fa-angle-double-right"></i>
<i class="fa fa-angle-double-down"></i>
<label for="c1"> erreur
<a href="">
<i class="fa fa-folder-open"></i>
</a>
</label>
<ul>';
}
foreach ($recherchefil as $key => $value) {
$cmpt++;
$id=$value['AlimentsAliment']['aliment2_id'];
$arbre1=$this->chercherfils($id,$cmpt);
$arbre=$arbre.$arbre1;
}
$arbre=$arbre.'</ul> </li>';
$arbre=$arbre2.$arbre;
}else{
$nom=$this->requestAction('/Aliments/recherchenom/'.$id);
if($nom!=''){
$arbre='<li>'.$nom.'</li>';
}else{
$arbre='<li>erreur
<a href="">
<i class="fa fa-folder-open"></i>
</a>
</li>';
}
}
return $arbre;
}
Pour le reste des fonctions dans les controller Aliments et AlimentsAliments se ne sont que des findAllbyid(); donc pas trop important pour encambrer le post avec :D
J'epsére que vous arriverai à trouver ou j'ai merdé :D merci d'avance :D