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

  [Opened] problème de Dépendance avec un autre champs de saisie

Posted by picolo on 04/09/2011 22:13

J'ai un problème

<menulist ref="marque"> 
<code>
	<label>Marque </label>
	<emptyitem>Toutes</emptyitem>
	<datasource dao="voitures~vehicule2" method="findAll" labelproperty="marque" valueproperty="marque"/>	
</menulist> <menulist ref="modele">
	<label>Modèle </label>
	<emptyitem>Tous</emptyitem>
	<datasource dao="voitures~vehicule2" method="findByCat" criteriaform="marque" labelproperty="modele" valueproperty="modele" />
</menulist> </code>

Et j'ai en retour l'erreur suivante:

Call to undefined method cDao_voitures_Jx_vehicule2_Jx_mysql::findByCat()

Le DAO que j'utilise pour est le suivant:

<?xml version="1.0" encoding="UTF-8"?>
<dao xmlns="http://jelix.org/ns/dao/1.0">
<code>
    <datasources>
        <primarytable name="vehicule" realname="vehicule" primarykey="vehicule_id" />
    </datasources>
    <record>
        <property name="vehicule_id" fieldname="vehicule_id" datatype="int" autoincrement="true"/>
        <property name="description" fieldname="description" datatype="varchar" required="true" maxlength="50"/>
        <property name="marque" fieldname="marque" datatype="varchar" required="true" maxlength="50"/>
        <property name="modele" fieldname="modele" datatype="varchar" required="true" maxlength="50"/>
        <property name="kilometrage" fieldname="kilometrage" datatype="int" required="true"/>
        <property name="carburant" fieldname="carburant" datatype="varchar" required="true" maxlength="20"/>
        <property name="date_immat" fieldname="date_immat" datatype="date" required="true"/>
        <property name="prix_vente" fieldname="prix_vente" datatype="int" default=""/>
        <property name="prix_neuf" fieldname="prix_neuf" datatype="int" default=""/>
        <property name="categorie" fieldname="categorie" datatype="varchar" required="true" maxlength="50"/>
        <property name="genre" fieldname="genre" datatype="varchar" required="true" maxlength="50"/>
        <property name="couleur" fieldname="couleur" datatype="varchar" required="true" maxlength="50"/>
        <property name="annee_mod" fieldname="annee_mod" datatype="varchar" required="true" maxlength="6"/>
        <property name="transmission" fieldname="transmission" datatype="varchar" required="true" maxlength="50"/>
        <property name="nb_portes" fieldname="nb_portes" datatype="tinyint" required="true"/>
        <property name="nb_places" fieldname="nb_places" datatype="tinyint" required="true"/>
        <property name="bv_nb_rapports" fieldname="bv_nb_rapports" datatype="tinyint" required="true"/>
        <property name="equipements" fieldname="equipements" datatype="text" required="true"/>
        <property name="puissance" fieldname="puissance" datatype="int" default=""/>
        <property name="rejet_co2" fieldname="rejet_co2" datatype="varchar" default="" maxlength="20"/>
        <property name="cylindree" fieldname="cylindree" datatype="int" required="true"/>
        <property name="label_eco" fieldname="label_eco" datatype="varchar" required="true" maxlength="20"/>
        <property name="photos_path" fieldname="photos_path" datatype="varchar" required="true" maxlength="20"/>
        <!--<property name="" fieldname="" datatype="string/int/float/date"
        required="yes" maxlength="" minlength="" regexp="" sequence=""
        updatepattern="" insertpattern="" selectpattern=""/>-->
    </record>
    <factory>
        <!--<method name="findByStage" type="select/selectfirst/delete/update/php">
            <parameter name="" />
            <values>
                <value property="" value="" />
            </values>
            <conditions logic="and/or">
                <eq property="" value="" />
            </conditions>
            <order>
                <orderitem property="" way="asc/desc" />
            </order>
            <limit offset="" count=""/>
            <body><![CDATA[
            ]]></body>
        </method>-->
    </factory>
</dao> </code>

Le problème viendrait t'il de mon DAO, je débute avec le framework, et je ne maitrise encore ni les DAO ni les Factory?

  [Opened] problème de Dépendance avec un autre champs de saisie

Reply #1 Posted by foxmask on 04/10/2011 00:40

Bonsoir,

Jelix dit qu'il vous manque une methode findByCat dans votre dao

Mais je pense que c'est plutot cela qu'il vous faut

<menulist ref="modele">
<code>
	<label>Modèle </label>
	<emptyitem>Tous</emptyitem>
	<datasource dao="voitures~vehicule2" method="findByMarque" criteriaform="marque" labelproperty="modele" valueproperty="modele" />
</menulist> </code>

et donc dans la DAO :

<method name="findByMarque" type="select">
<code>
    <parameter name="marque" />
    <conditions>
      <eq property="marque" expr="$marque" />
    </conditions>
</method> </code>

Ainsi :

dans votre form on defini la "method" (portant le meme nom que celle de la DAO), le criteriafrom est le parameter passé à la methode pour n'extraire que les données de la marque choisie.

Sinon un petit tour dans la doc http://jelix.org/articles/fr/manuel-1.2/daos/methodes_xml vous aidera ;)


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

  [Opened] problème de Dépendance avec un autre champs de saisie

Reply #2 Posted by picolo on 04/10/2011 02:28

Bonsoir,

Merci foxmask pour cette réponse rapide, et je commence à comprendre, je suis novice, et j'ai encore du mal avec le fonctionnement de la factory, je suis en train de lire et relire la doc, mais ça reste nébuleux, j'ai du mal avec la balise "parameter" et je ne sais pas quoi mettre dans la balise <values>. En créant la méthode comme vous me l'avez indiqué dans la factory, j'ai de nouveau un message d'erreur

Missing argument 1 for cDao_voitures_Jx_vehicule_Jx_mysql::findByMarque()

Je suis en train de tout relire, et de faire des testes, mais je n'ai pas encore trouvé la solution.

  [Opened] problème de Dépendance avec un autre champs de saisie

Reply #3 Posted by foxmask on 04/10/2011 09:21

j'ai ecris criteriaform au lieu de criteriafrom ...


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

  [Opened] problème de Dépendance avec un autre champs de saisie

Reply #4 Posted by picolo on 04/10/2011 11:58

Bonjour,

Merci pour votre aide, ce n'est pas encore ça, mais j'avance, et je commence à comprendre, la route sera longue, j'ai aussi tendance à écrire "criteriaform" un problème de réglé, plus d'erreur, mais je n'ai pas le résultat escompté, le menu modèle reste vide, même quand je sélectionne une marque, j'utilise pourtant jelix-1.2.1.1. Au final, j'ai fais la méthode:

<code>
		<method name="findByMarque" type="select">
			<parameter name="marque" />
			<conditions>
				<eq property="marque" expr="$marque" />
			</conditions>
			<order>
                <orderitem property="modele" way="asc" />
            </order>
		</method>
</code>

Et au niveau de mon formulaire mes menulist sont les suivants:

<menulist ref="marque"> 
<code>
	<label>Marque </label>
	<emptyitem>Toutes</emptyitem>
	<datasource dao="voitures~vehicule" method="findMarque" labelproperty="marque" valueproperty="marque"/>	
</menulist> <menulist ref="modele">
	<label>Modèle </label>
	<datasource dao="voitures~vehicule" method="findByMarque" criteriafrom="marque" labelproperty="modele" valueproperty="modele" />
</menulist> </code>

  [Opened] problème de Dépendance avec un autre champs de saisie

Reply #5 Posted by foxmask on 04/10/2011 19:07

ici

<menulist ref="marque"> 
<code>
	<label>Marque </label>
	<emptyitem>Toutes</emptyitem>
	<datasource dao="voitures~vehicule" method="findMarque" labelproperty="marque" valueproperty="marque"/>	
</menulist> </code>

findMarque sort d'où et doit faire quoi ?

une methode implicite est "findAll" qui recupere implicitement tous les enregistrements d'une table.


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

  [Opened] problème de Dépendance avec un autre champs de saisie

Reply #6 Posted by picolo on 04/10/2011 21:44

Alors,

findMarque doit me permettre de retourner qu'une seule fois une marque de voiture, avec findAll, j'avais plusieurs fois la même marque qui apparaissait car j'avais plusieurs voitures de la même marque présentent dans les enregistrements. La "method" findMarque est la suivante:

<code>
		<method type="select" name="findMarque" groupby="marque">
				<values>
					<value property="category" expr="$categorie"/>
				</values>
				<order>
					<orderitem property="marque" way="asc" />
				</order>
		</method>		
</code>

  [Opened] problème de Dépendance avec un autre champs de saisie

Reply #7 Posted by foxmask on 04/11/2011 00:52

ben il faut une table marque avec sa dao dédiée


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

  [Opened] problème de Dépendance avec un autre champs de saisie

Reply #8 Posted by picolo on 04/11/2011 08:45

Ok, merci pour les conseils.

  [Opened] problème de Dépendance avec un autre champs de saisie

Reply #9 Posted by laurentj on 04/11/2011 10:07

La balise <value> n'est valide que pour les méthodes de type "update" (mise à jour).

Elle ne sert à rien donc ici, et est ignorée.

 
Page
  1. problème de Dépendance avec un autre champs de saisie