Page 1 sur 1

Surcharge module crud

Message Publié : 12 Août 2013, 20:17
par aj13
Hello, j'ai créé un module commandes qui remonte toute les commandes passé. Seulement je remonte "Id client" pour chaque commande et je voudrais surcharger champ pour remonter le nom et le prénom du client... Donc sur l'index.php de la vue du module il faudrait que je remplace tout les "id_client" par le nom et le prénom de celui ci

Re: Surcharge module

Message Publié : 12 Août 2013, 20:53
par pa-de-solminihac
Tu as du code à me montrer pour m'aider à comprendre ?

Re: Surcharge module

Message Publié : 12 Août 2013, 20:59
par aj13
pas vraiment c'est un module qui utilise crud, il remonte donc tout les champs de ma table commandes et c'est sur l'index.php que je souhaite surcharger les infos récupéré de ma table

Re: Surcharge module

Message Publié : 13 Août 2013, 08:53
par pa-de-solminihac
En fait tu as 2 possibilités :

Solution 1 : surcharger manuellement le champ id_client :
Je pars du principe que ta table qui enregistre les commandes s'appelle commande. Il suffit alors de créer un fichier
Code : Tout sélectionner
view/commandes/index/index_fields/custom_commande.id_client.php


Tu peux maintenant y mettre ce que tu veux, ça remplacera le champ
Code : Tout sélectionner
<td></td>
qui affiche ton id_client...


Solution 2 : dire au module CRUD qu'il y a une jointure entre ta table commande et la table client afin qu'il affiche les champs de ta table client
Il faut modifier le modèle, sans doute dans ton fichier siteCommandeModel.php et modifier dans ta fonction _init() la partie :
Code : Tout sélectionner
        $this->tables = array(
            'commande' => ''
        );

pour la remplacer ainsi :
Code : Tout sélectionner
        $this->tables = array(
            'commandes' => '',
            'client' => array(
                'inner join' => "`commande`.`id_client` = `client`.`id` "
            )
        );

Il faudra aussi dire à CRUD qu'il ne doit accéder à la table client qu'en lecture, en rajoutant ensuite :
Code : Tout sélectionner
        $this->metas['readonly_tables'] = array(
            'client' => '',
        );

Il ne te reste plus qu'à choisir quelles colonnes tu voudras masquer.

Re: Surcharge module

Message Publié : 13 Août 2013, 20:21
par aj13
Yep ça fonctionne mais plutôt de la manière suivante

Code : Tout sélectionner
$this->tables = array(
                'commandes'=>'',
                'clementine_adresse' => array(
      'inner join' => "`commandes`.`id_client` = `clementine_adresse`.`clementine_users_id` "
   )               
);

Re: Surcharge module

Message Publié : 13 Août 2013, 21:30
par pa-de-solminihac
Merci, j'ai mis à jour mon message avec ta correction.