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

  [Opened] jControllerDaoCrud et affichage titre des colonnes

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

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

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

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

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

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 smile), 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