Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] jControllerDaoCrud et affichage titre des colonnes

Posted by Nesswaw on 08/31/2018 22:50

Bonjour,

J'ai deux tables avec une clé étrangère

facture:

  • idFacture
  • ref
  • montant
  • fk_idFournisseur => Pointe sur fournisseur.idFournisseur

fournisseur:

  • idFournisseur
  • nom

J'ai mes deux daos, avec mes champs respectifs J'ai mon fichier jForms pour les factures:

<input ref="ref" maxlength="64">
	<label>Référence</label>
</input>

<input ref="montant">
	<label>Montant</label>
</input>

<menulist ref="fk_idFournisseur" required="true">
	<label>Fournisseur</label>
    <datasource dao="fcm~fournisseurs" method="findAll" labelproperty="nom" valueproperty="idFournisseur" />
</menulist>

<submit ref="_submit">
	<label>Enregistrer</label>
</submit>

Quand le CRUD affiche la liste des factures, j'ai mon champ "fk_idFournisseur" qui est listé, avec le nunéro du fournisseur, jusque là tout est normal.

Maintenannt j'aimerais remplacer le titre "fk_idFournisseur" dans le tableau qui liste les factures, par un titre plus propore genre "Fournisseur" et qui liste le nom du fournisseur à la place de son id.

Comment faire?

Merci d'avance pour votre aide

  [Opened] jControllerDaoCrud et affichage titre des colonnes

Reply #1 Posted by foxmask on 09/01/2018 19:26

bonjour,

c'est ce qu'est sensé faire le noeud "label" du menulist. vous devriez deja avoir "Fournisseur" qui s'affiche non ? cf https://docs.jelix.org/fr/manuel/jforms/affichage


@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !

  [Opened] jControllerDaoCrud et affichage titre des colonnes

Reply #2 Posted by Nesswaw on 10/05/2018 21:35

Bonjour,

Oui dans mon entête de colonne c'est bien mon label qui s'affiche, ça on est ok.

Je parle des valeurs dans la liste, par défaut c'est le numéro qui s'affiche (la valeur du champ), moi j'aimerais afficher le champ "Nom" par rapport à cet id, je pense il faut faire un select spécial avec jointure sur mes tables lié?

Merci

  [Opened] jControllerDaoCrud et affichage titre des colonnes

Reply #3 Posted by laurentj on 10/07/2018 09:31

Bonjour,

Si tu veux le label du fournisseur sélectionné quand tu veux afficher une facture (et donc récupérer cette facture), il faut effectivement faire une jointure sur la table.

Donc dans ton DAO de facture, il faut que tu ajoute une balise <foreigntable> (ou <optionalforeigntable> si l'id du fournisseur peut être null). Voir : https://docs.jelix.org/fr/manuel-1.6/dao(..).

  [Opened] jControllerDaoCrud et affichage titre des colonnes

Reply #4 Posted by Nesswaw on 12/02/2018 14:50

Bonjour,

Merci, cela fonctionne:

<primarytable name="depense" realname="depense" primarykey="DepenseID" />
<foreigntable name="depensecategorie" realname="depensecategorie" primarykey="DepenseCategorieID" onforeignkey="FK_DepenseCategorieID" />


<property name="DepenseCategorieName" fieldname="Name" table="depensecategorie" datatype="text" />

Mais maintenant, quand je liste mes items, le nom de la colonne, dans le crud s'appelle "DepenseCategorieName", comment je peux faire pour avoir "un joli nom" style "Catégorie"?

Merci

  [Opened] jControllerDaoCrud et affichage titre des colonnes

Reply #5 Posted by laurentj on 01/03/2019 15:38

Bonjour,

Il faut que tu modifie le template utilisé pour lister les enregistrements.

Par défaut c'est le template "jelix~crud_list", mais comme tu veux le modifier, il faut que tu le copie dans ton module, que tu l'indiques dans la propriété $listTemplate de ton controleur crud.

Le template pour lister, que l'on nommera crud_list_facture.tpl dans le module nommé achat par exemple (remplace par le nom de ton module :-)), pourrait ressembler à ça (juste la partie qui affiche l'entête du tableau) :

<table class="records-list">
<thead>
<tr>
    {foreach $properties as $propname}
    {if isset($controls[$propname])}
    <th>{$controls[$propname]->label|eschtml}</th>
    {else}
       {if $propname == "DepenseCategorieName"}
       <th>Catégorie</th>
      {else}
        <th>{$propname|eschtml}</th>
      {/if}
    {/if}
    {/foreach}
    <th>&nbsp;</th>
</tr>
</thead>

Et dans ton contrôleur, tu mettras :

protected $listTemplate = 'achat~crud_list_facture';
 
Page
  1. jControllerDaoCrud et affichage titre des colonnes