Rebonjour,
Je suis navré de poster deux sujets dans la journée :) mais j'ai recommencer le tutoriel CakePhp portfolio avec cette fois si la version 1.3 de Cake.
Je galère déjà beaucoup moins, mais la j'ai un nouveau petit soucis, c'est que l'affichage de login.ctp ne se fait pas.
Faut-il rajouter quelque chose pour l'afficher ? je n'ai aucune erreur sur le code je l'ai vérifié.
Aussi autre question, j'ai pas les même messages de debug que Grafikart sur son tuto, dans le core au niveau debug j'ai 2 et LOG_ERROR 2 aussi.
Comment puis-je faire pour avoir la même "debug bar" ?
Merci d'avance :)
ben je ne sais pas ce qu'est ton login.ctp
Si c'est une vue ca sera la fonction $this->render('login');
si c'est un layout ca sera la valeur $this->layout='login';
Sinon ... ben.. je te conseil d'oublier la version 1.3 sinon tu vas perdre du temps après t'être habitué à un certain type d'ecriture et une arborescence qui a été complètement repensé
Voir l'article
Essai de suivre les tutos (même s'ils sont pour cake 1.2 ou 1.3 / puisqu'anciens) mais de les appliquer chez toi sur cake 2.x
et appui toi sur la doc et l' api
Bonne continuation :) (j'espère ne pas avoir été rabat joie!)
Voici le code de login.ctp
<h1>Identifiez vous pour administrer </h1>
<?php
echo $this->Session->flash('auth');
echo $this->Form->create('User', array('action'=>'login'));
echo $this->Form->input('login',array('label'=>'Login :'));
echo $this->Form->input('pass',array('type'=>'password','label'=>'Mot de passe : '));
echo $this->Form->end('Connexion');
?>
C'est dans login.ctp que je créé mon formulaire avec les différents champs. Ce fichier se trouve dans le Dossier view/users(un dossier que j'ai créé pour y mettre login.ctp).
Et donc quand dans mon url je tape /monsite/users/login rien ne s'affiche, pourtant j'ai regardé la doc et ils procèdent de la même manière.
Une chose bizard c'est que si je fait une erreur dans le code par exemple en enlevant un ; la une partie du formulaire va s'afficher.
Sinon j'ai bien vérifié le helper d'app_controller et j'indique bien de prendre en compte Form.
Sinon merci pour le conseil j'ai mes deux versions au même niveau c'est a dire bloqué a l'affichage du formulaire :)
Voila
<?php
class UsersController extends AppController{
function login(){}
function logout(){}
}
?>
1ere idée
si tu as mise en place le component Auth désative le (au niveau de l'AppCOntroller) sinon dans UsersController rajoute ceci
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('login','logout');
}
2nde idée
Au niveau de ta base de donnée tu es sur d'avoir la table users
avec comme champs id, login et pass ???
Alors en désactivant Auth toujours rien le formulaire ne s'affiche pas, et en laissant Auth et en ajoutant ton code dans UsersController rien non plus.
J'ai bien vérifié la Bdd et la table users existe bien et les champs aussi.
Bonjour, ce matin j'ai testé de mettre une form dans mon default.ctp et pareil rien ne s'affiche.
PS: Je rectifie, sur la version 1.3 en ajoutant les form dans default.ct ça ne fonctionne pas, mais en revanche sur la 2.1 si.
avec le code remodelé??? (genre sur la 1.3 tu as fait $form->input... et sur la 2.x $this->Form->input....) ?
Oui, mais sur la 2.x c'est pareil ma form s'affiche pas quand je l'appel depuis login.ctp.
Comme pour l'ajout d'un Elements ou il faut l'appeler dans la page souhaitée, ne faut'il pas faire quelque chose de similaire pour appeler ma form créée dans login.ctp ??
dans ton beforefilter sur appcontroller tu as bien ca ?
$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
$this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');
$this->Auth->loginRedirect = array('controller' => '[MODELX on s'en tape]', 'action' => 'index');
et en appel des components plus haut
public $components = array(
'Acl',
'Auth' => array(
'authorize' => array(
'Actions' => array('actionPath' => 'controllers')
)
),
...
??? sinon fait un debug de la fonction login peut être qu'elle renvoie false quelquepart et donc pas d'execution
(verifie également que dans l'AppController tu n'as pas mis de fonction login mais juste dans UsersController.php.php
Ooula non la je suis retourné sur la version 2.x et donc déja le fichier c'est AppController qui est dans le dossier Controller et non plus app_controller a la racine d'app.
Et ensuite non mon fichier ne contenait pas dutout le code que tu m'a mis, et en l'ajoutant j'ai maintenant une boucle infinit de redirection, ça doit venir de la config de Auth.
Je te link mon code entier du fichier AppController.
<?php
class AppController extends Controller {
var $components = array(
'Acl',
'Auth' => array(
'authorize' => array(
'Actions' => array('actionPath' => 'controllers')
)
)
);
//var $components = array("Auth");
// var $helpers = array("Javascript","Html","Form");
function beforeFilter(){
$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
$this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');
$this->Auth->loginRedirect = array('controller' => 'user', 'action' => 'index');
/* if(isset($this->Auth)){
$this->Auth->userModel="User";
$this->Auth->fields = array('username'=>'login','password'=>'pass');
if(!isset($this->params"prefix"]) || $this->params"prefix"]!="admin" || $this->name == "Users"){
$this->Auth->allow();
}
}*/
}
}
?>
En ajoutant ton code la redirection ce fait tout le temps maintenant.
je crois qu'en faite en t'identifiant tu est redirigé vers user (??? avec ou sans "s" ???) et la vue index, et vu que Auth fonctionne par defaut c'est "J'acceppte personne ni aucun groupe tant qu'on me le dit pas!!!" et donc il revient à l'authentification qui est la page users/login, mais tu t'es deja identifié et tu a deja une session / cookie en cours donc ca te relance vers users/index etc etc etc à l'infini
le composant Auth (avant la création des AROs et ACOs et des droits ArosAcos) doit être "court circuité" avec
$this->Auth->allow('*');
que tu peux placer dans l'Appcontroller dans la fonction beforeFilter
Ce qui doit devenir
<?php
class AppController extends Controller {
var $components = array(
'Acl',
'Auth' => array(
'authorize' => array(
'Actions' => array('actionPath' => 'controllers')
)
)
);
var $helpers = array("Javascript","Html","Form");
function beforeFilter(){
$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
$this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');
$this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'index');
$this->Auth->allow('*');
}
}
?>
:)
Bonjour, j'ai testé votre solution mais toujours rien.
Je suis actuellement le tutoriel officiel et j'arrive a bien avancer, une fois digéré je reviendrais sur le tutoriel de Grafikart en espérant comprendre ce qui foire.
Merci pour l'attention et l'aide que vous m'avez apporté :).
Bonne journée,
iluzzion.