Archives pour la catégorie Cakephp

Afficher qu’une seule erreur à la fois en cakephp

Lorsque vous soumettez un formulaire avec cakephp (et que vous avez indiqué vos différentes vérifications dans votre modèle), vous obtenez toutes les erreurs pour tous les champs où il y a une erreur, comme ceci:

erreurs-form-cakephp

Ce comportement de base peut être dérangent pour diverses raisons (esthétique, formulaire trop grand etc…).

Je vous propose de n’afficher que la première erreur, ce chiffre pourra être modifié si vous le souhaitez.

  • 25 septembre 2014
  • john
  • 0

Suppression en cascade avec cakephp

Si vous avez un e-commerce (sous cakephp), vous avez donc des produits. Ces produits ont surement des photos, des commentaires, des notes etc…

Que se passe t-il si un jour vous devez supprimer tout ce qui touche à un produit tout en gardant une bdd cohérente?

Sur votre action delete_produit, vous allez devoir récupérer toutes les photos, commentaires, notes etc… concernant ce produit et vous allez devoir les supprimer 1 par 1 dans une boucle.

Votre action va ressembler à quelque chose comme ça:

  • 18 septembre 2014
  • john
  • 0

Recoder les ACL de cakephp

Pour un projet perso, j’ai du mettre un système de droit (admin, membre ) en place sur un site cakephp. Je devais le faire dans la matinée donc je me suis donc mis à lire la doc’ sur les ACL.

Honnêtement, je n’ai rien compris à ces histoires de nain qui boivent de la bière 😀 (et puis l’environnement bruyant autour de moi ne m’a pas aidé).

J’ai donc tenté de recoder mes ACL selon mes besoins et devinez quoi, ça m’a pris une heure (plus rapidement que le temps que j’ai accordé à la lecture de la doc’ sur les ACL 😀 ).

Allez hop on est parti.

Quasiment tout le traitement va se passer dans votre AppController et il faudra paramétrer vos propres routes. Vous avez donc uniquement 2 fichiers à modifier.

Coté structure, il vous faut seulement un champ « admin » dans votre table users.

  • 10 septembre 2014
  • john
  • 0

Recupérer vos informations de modèles reliés entre eux sur plusieurs niveaux en cakephp

Pour relier des modèles entre eux en cakephp, vous utilisez les hasone, hasmany, belongsto etc…
Si vous souhaitez relier votre modèle « message » à votre modèle « user », vous faites comme ceci sur votre modèle message:

public $belongsTo=array(
                    'User' => array(
                                        'className' => 'User',
                                        'foreignKey'=>'id_user'
                                    ),
                    );

Un « message » appartient à un « user ».

Donc si vous souhaitez récupérer les informations de l’utilisateur sur un commentaire, vous faites :

$this->Message->find('first');

et vous retourne ceci :

Array
(
    [Message] => Array
        (
            [id] => 18
            [message] => reponse 1
            [id_user] => 2
            etc...
        )

    [User] => Array
        (
            [id] => 2
            [username] => user
            etc...
        )

)

Maintenant que se passe t-il si vous avez un forum qui a des messages et ces messages sont reliés à des utilisateurs?

  • 3 septembre 2014
  • john
  • 0

Se logguer avec un autre champ que le champ username en cakephp

Aujourd’hui, pas de gros code ou de bonus. Juste une info (ça change).

Vous avez suivi le tutoriel pour apprendre à créer un espace membre en cakephp. Tout marche mais un jour, vous avez besoin de vous logguer avec un autre champ que le champ « username ». Par exemple, avec votre email.

Cakephp permet 3 méthodes pour l’authentification:

  • FormAuthenticate (l’authentification avec formulaire en POST, celle que vous avez du comprendre)
  • BasicAuthenticate (l’authentification Basic HTTP)
  • DigestAuthenticate (authentification Digest HTTP)

On ne traitera pas des 2 derniers cas ici. Nous utiliserons l’authentification de « base » (pas la « basic » :D) en POST.

  • 27 août 2014
  • john
  • 0

Créer un helper avec cakephp

Si vous faites du cakephp, vous avez du utiliser le « HtmlHelper » ou le « FormHelper » sans même le savoir.
Mais si, si vous avez utilisé ceci :

<?php 
echo $this->Html->charset();
?>

ou

<?php 
echo $this->Html->image('votre_image.png');
?>

ou encore

<?php 
echo $this->Form->input('username', array('label' => 'Username'));
?>

Vous avez utilisé un helper.

Et il faut quand même l’avouer, c’est bien pratique. Vous n’avez plus besoin de gérer les emplacements de vos fichiers, les noms de dossiers ou bien le système de tableau des name pour vos inputs de vos formulaires cakephp.

La bonne nouvelle est que vous pouvez créer vos propres helpers

  • 20 août 2014
  • john
  • 0

Changer le design des flash notices en cakephp

Utiliser les flash notices c’est bien, pouvoir les styliser c’est mieux non?
Voyons comment faire cela.

Ce que vous faites

Pour lancer vos flash notices avec cakephp vous faites quelque chose comme:

<?php 
public function index()
{
	$this->Session->setFlash('Super notice');
}
?>

et vous génère quelque chose comme :


<div class="message" id="flashMessage">Super notice</div>

  • 13 août 2014
  • john
  • 0