Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 21-03-2014 12:28:45

lalwende
Membre
Date d'inscription: 02-02-2011
Messages: 40

Récupérer la clé d'une ligne d'un fichier CSV pour insertion en base

Bonjour tout le monde.

Je me forme sur zf2, le mvc, les fonctions php, la poo et aussi php de façon générale.

J'ai bien conscience du précepte "read the fucking manuel". Il est évident que pour apprendre, il faut chercher sinon on ne peut pas retenir. Mais je vous remercie de votre assistance voir de votre empathie et surtout de me donner de votre temps.

J'ai fais le quickstart, j'ai lu de nombreux sujets, tutoriels afin de parfaire ma connaissance sur cette environnement.

J'ai évidemment rencontré plusieurs difficultés.
(sur le plan conceptuel - php -> les fonctions php - les objets). Bref j’apprends.

Mon projet: J'ai un module qui permet de lire un fichier csv.
Ce fichier s'affiche dans un tableau
Je souhaite donner la possibilité à l'utilisateur d'enregistrer une ligne ou tout le tableau en base.

Ce que j'ai réussi à faire:
-> lire le fichier csv
-> afficher son contenu
-> mettre en relation les indexs du tableau csv et ceux de la table pour que l'insertion se passe correctement.
-> tester l'insertion via le controller avec un simple array.

Voici mon problème.

Je pense que c'est lié à un problème de connaissance de ma part.

J'ai dans ce tableau une url sous la forme:

<a href="<?php echo $this->url('mytuc', array('action'=>'arrache', 'id'=>'?'));?>"> Sauvegarder cette ligne</a>

J'ai mis un ? à l'endroit ou je péche....

Code:

<?php foreach ($tableauDuCsv as $csvline) : ?>

<tr>
    
        <td><?php echo $this->escapeHtml($csvline['date_authorized']);?></td>
        <td><?php echo $this->escapeHtml($csvline['date_echeance']);?></td>

J'ai bien entendu parler des routers
http://framework.zend.com/manual/2.0/en … llers.html

Mais je souhaite simplement obtenir l'url suivante, si je sélectionne la ligne 3.
mytuc/arrache?ma_cle=2

Si j'écris l'url à la main, je l'a récupére bien par cette ligne:

$ma_cle = $this->getRequest()->getQuery('ma_cle', false);
echo '<pre>'; var_dump($tableauDuCsv[$ma_cle]);

Via mon var_dump j'obtiens bien mon array correspondant à l'id.

J'espère être assez clair, merci pour votre aide. Sinon ce n'est pas grave je trouverais....


Just do it

Hors ligne

 

#2 21-03-2014 12:48:32

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: Récupérer la clé d'une ligne d'un fichier CSV pour insertion en base

euh.. Si j'ai bien compris.
(je suis pas sur ^^)

il faut que tu remplace un tout petit truc dans tes boutton, pour reprendre ton exemple :

Code:

[lang=php]
// url qui s'appel 'mytuc' dans ton routing:
//mytuc/action=arrache&ma_cle=2

<a href="<?php echo $this->url('mytuc', array('action'=>'arrache', 'ma_cle'=>'2'));?>"> Sauvegarder cette ligne</a>

juste une petite remarque, dans tes url tu à un paramètre 'action' que tu va t'efforcer d'enlever wink
Il existe des routes 'enfants' (child route big_smile) qui te permettre de préciser tes urls, mais pour ça regarde un peu dans le fofo y a déjà pas mal de topic dessus wink

Dernière modification par flobrflo (21-03-2014 12:49:18)

Hors ligne

 

#3 21-03-2014 13:35:09

lalwende
Membre
Date d'inscription: 02-02-2011
Messages: 40

Re: Récupérer la clé d'une ligne d'un fichier CSV pour insertion en base

Ok je vais chercher dans le fofo wink - donc la piste c'est les child route.

En faite je devrais obtenir un truc du genre:

<a href="<?php echo $this->url('mytuc', array('action'=>'arrache', 'ma_cle'=>'2'));?>">

je pensais à un truc du genre:
<a href="<?php echo $this->url('mytuc', array('action'=>'arrache', 'tableauDuCsv'=>'$ma_cle'));?>">

ou du type

<a href="<?php echo $this->url('mytuc', array('action'=>'arrache', 'tableauDuCsv[$ma_cle]');?>">

Merci pour ton retour aussi rapide. Je vais fouiller....

Thx

si d'autres personnes passent par là vous etes les bienvenues.


Just do it

Hors ligne

 

#4 21-03-2014 13:37:51

lalwende
Membre
Date d'inscription: 02-02-2011
Messages: 40

Re: Récupérer la clé d'une ligne d'un fichier CSV pour insertion en base

Donc l'idée c'est d'aller regarder çà:

// url qui s'appel 'mytuc' dans ton routing:
//mytuc/action=arrache&ma_cle=2

Ok je contrôle çà


Just do it

Hors ligne

 

#5 21-03-2014 13:41:03

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Récupérer la clé d'une ligne d'un fichier CSV pour insertion en base

Salut, ça ne fonctionne pas exactement comme ça en fait. Tu as deux choses dans les routes :
- les paramètres liés à la route
- les paramètres liés à l'url

Alors les deux sont liés mais dans un cas tu vas avoir une route qui va te donner une url comme ceci : /monurl/param1/value1/param2/value2 (route de type Segment si valu1 et value2 sont dynamique sinon route Literal) et dans l'autre cas tu vas avoir une route du genre : /monurl?query1=value1&query2=value2
Tu peux bien sur mixer les 2 : monurl/param1/value1/param2/value2?query1=value1&query2=value2

Dans le cas d'un paramètre de route tu vas pouvoir le récupérer dans ton contrôleur de la manière suivante : $this->params('nomdemonparametre'); dans le cas d'un paramètre lié à l'url tu vas le récupérer comme ceci $this->params()->fromQuery('nomdemonparametre');

Pour spécifier des paramètres lié à l'url (dit query params) via l'aide de vue url il faut faire comme ça : $this->url('nomdemaroute', array(), array('query' => array('param1' => 'value1', 'param2' => 'value2'))); Ceci va te générer une url comme ça (si je me suis pas gouré) : /urldemaroute?param1=value1&param2=value2

Et vires moi l'action dans l'appel de la route, c'est à définir dans le router !! Peux-tu me diras sur quel tuto/blog tu as trouvé ça stp ??

Hors ligne

 

#6 21-03-2014 13:55:42

lalwende
Membre
Date d'inscription: 02-02-2011
Messages: 40

Re: Récupérer la clé d'une ligne d'un fichier CSV pour insertion en base

Bonjour Orkin,

Merci pour ces explications très détaillées c'est parfait. Je comprend beaucoup mieux la nuance entre - les paramètres liés à la route et les paramètres liés à l'url.

C'est sympa.

Pour répondre à ta question, il me semble que c'est dans le quickstart Album - version 2.

Mais j'ai bien l'impression que cela a été actualisé depuis car je ne retrouve plus ces 2 lignes:

Code:

     <td>
         <a href="<?php echo $this->url('album',
             array('action'=>'edit', 'id' => $album->id));?>">Edit</a>
         <a href="<?php echo $this->url('album',
             array('action'=>'delete', 'id' => $album->id));?>">Delete</a>
     </td>

Je vais relire ce quickstart

http://framework.zend.com/manual/2.3/en … tions.html

Ps: je vois que tu es de Caen. Moi aussi, c'est cool. Peut être à l'occasion en ville smile je t'offre une bière.

A+


Just do it

Hors ligne

 

#7 21-03-2014 14:10:28

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Récupérer la clé d'une ligne d'un fichier CSV pour insertion en base

Arg c'est dans la doc officielle hmm

lalwende a écrit:

Ps: je vois que tu es de Caen. Moi aussi, c'est cool. Peut être à l'occasion en ville smile je t'offre une bière.

Si elle est bonne sans soucis wink. Au trappist ils en font des bonnes !!

Hors ligne

 

#8 21-03-2014 14:12:23

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: Récupérer la clé d'une ligne d'un fichier CSV pour insertion en base

Je savais qu'Orkin gueulerait avec le 'action' xD

Dans le quickstart ils parlent du paramètre action, mais c'est juste un exemple pour faciliter l'apprentissage, ils arrivent ensuite aux child route pour étoffer et complémenter ce chapitre wink

Hors ligne

 

#9 21-03-2014 14:59:58

lalwende
Membre
Date d'inscription: 02-02-2011
Messages: 40

Re: Récupérer la clé d'une ligne d'un fichier CSV pour insertion en base

Re,

Juste pour ceux qui comme moi ont le même problème j'ai trouvé en faisant ceci:

Code:

<?php foreach ($tableauDuCsv as $ma_cle=>$csvline) : ?>

Puis pour l'url

<a href="<?php echo $this->url('mytuc', array('action'=>'arrache', 'id'=>$ma_cle));?>"> Sauvegarder cette ligne</a>

Bon comme préciser ci-dessus par Orkin il ne faut pas avoir l'action dans l'appel de la route sous cette forme.
Mais plutôt

$this->url('album', array('action' => 'add')));


Just do it

Hors ligne

 

#10 21-03-2014 15:16:08

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: Récupérer la clé d'une ligne d'un fichier CSV pour insertion en base

$this->url('album', array('action' => 'add')));    =>   $this->url('album', array('id'=>$ma_cle)));

Sinon Orkin va vraiment gueuler la =d

Hors ligne

 

#11 21-03-2014 15:16:17

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Récupérer la clé d'une ligne d'un fichier CSV pour insertion en base

lalwende a écrit:

Re,
Mais plutôt

$this->url('album', array('action' => 'add')));

Non l'action doit directement être définie dans le router et ne doit apparaître qu'à un seul endroit : le router et uniquement le router.

Hors ligne

 

#12 21-03-2014 15:30:54

flobrflo
Membre
Lieu: Marseille
Date d'inscription: 26-04-2013
Messages: 376

Re: Récupérer la clé d'une ligne d'un fichier CSV pour insertion en base

Pour te faire un mini résumé,

si tu à deux url:
1) mytuc/action=add&ma_cle=2
2) mytuc/action=del&ma_cle=2

Et bien tu va devoir créer 2 routes différente:
mytuc/add/2   :   $this->url('mytuc-add', array('id' => '2')));
mytuc/del/2   :   $this->url('mytuc-del', array('id' => '2')));


VOilou smile

Hors ligne

 

#13 21-03-2014 16:23:35

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Récupérer la clé d'une ligne d'un fichier CSV pour insertion en base

Le fait est que le mot clé action permet de désigner quelle action du contrôleur est utilisé pour dispatcher la requête donc elle doit être précisée dans le router plutôt que les redirections, url etc ... Si jamais l'action vient à changer faut repasser sur toute l'application au lieu d'un seul endroit et ça t'oblige à écrire plus de code alors que c'est pas nécessaire.

Hors ligne

 

#14 30-11-2015 12:22:54

lalwende
Membre
Date d'inscription: 02-02-2011
Messages: 40

Re: Récupérer la clé d'une ligne d'un fichier CSV pour insertion en base

Je reviens dessus après un certain temps - c'est juste pour vous remercier. Merci Orkin


Just do it

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages