IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Récupération des noms de dossiers dans le champs select sur prestashop 1.7 [PrestaShop]


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Candidat au Club
    Femme Profil pro
    Webmaster
    Inscrit en
    Mai 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Récupération des noms de dossiers dans le champs select sur prestashop 1.7
    Bonjour,

    Ce poste (lister les noms de dossier dans un menu déroulant) m'a bien aidé pour le champs de formulaire select.

    ska_root j'ai réutilisé votre méthode : new DirectoryIterator, mais sur prestashop 1.7 j'ai eu un petit accrochage.

    Voici mon code :

    Le helper form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    				array(
    					'type' => 'select',
    					'label' => $this->l('Events:'),
    					'name' => 'selectEvent',
    					'required' => true,
    					'options' => $this->getEvents(new DirectoryIterator($_SERVER['DOCUMENT_ROOT'].$this->_path.'/views/img'),'selectEvent'),
     
    				),
    et ici ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public function getEvents($it,$name){
     
    	// pour chaque entree du repertoire
    	for( ; $it->valid(); $it->next()) {
    		// si c'est un repertoire et si ce n'est pas "." ou ".."
    		if($it->isDir() && !$it->isDot())
     
    		  $idevents =array(
    			'query' => $idevents = array(
    				array('idevents' => $it->getFilename(), 'name' => $it->getFilename()),
    			),
    			'id' => 'idevents',
    			'name' => 'name'
    		);
    	}
     
    return $idevents;
     }
    Effectivement je n'ai pas utilisé la variable ($name), mais lorsque j'ai mon tout le code de mon formulaire avec le (name) les arrays ne supportent pas les boucles FOR internes.

    Le résultat qui s'affiche dans le champs (select) n'est rien d'autre que 1 nom de dossier sur 5 et en plus c'est le dernier.

    Quelqu'un aurait une idée ?

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    A priori, tu crées un nouveau tableau à chaque tour de boucle for dans ta fonction getEvents. Il faut initialiser le tableau avant la boucle et ajouter des éléments dedans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public function getEvents($it,$name){
        $idevents = array(); // on initialise le tableau
        // pour chaque entree du repertoire
        for( ; $it->valid(); $it->next()) {
            // si c'est un repertoire et si ce n'est pas "." ou ".."
            if($it->isDir() && !$it->isDot())
                // on ajoute dans le tableau
                $idevents[] = array(
                    'query' => $idevents = array(
                            array('idevents' => $it->getFilename(), 'name' => $it->getFilename()),
                        ),
                    'id' => 'idevents',
                    'name' => 'name'
                );
        }
        return $idevents;
     }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Candidat au Club
    Femme Profil pro
    Webmaster
    Inscrit en
    Mai 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour Celira,

    Merci pour le conseil de réinitialisation d'array !

    Par contre j'ai un message d'erreur sur prestashop 1.7

    Nom : erreur-query.PNG
Affichages : 98
Taille : 7,4 Ko

    A priori c'est le "'query' =>" qui n'est pas compris.


  4. #4
    Candidat au Club
    Femme Profil pro
    Webmaster
    Inscrit en
    Mai 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Celira,

    Vous aviez raison pour l'initialisation du tableau.

    J'avais juste trop de code dans la boucle et j'ai changé le nom des variables.

    Je laisse les codes pour ceux qui en auront besoin.

    Descriptif : ce serait pour récupérer les noms des dossiers dans le treeDossier de votre ordinateur et les mettre dans un input SELECT (prestashop 1.7).
    Le lien est tout bêtement c://... -> jusqu'à votre répertoire ici dans l'exemple c'est un raccourci pour un module prestashop.

    Formulaire Helpform prestashop 1.7 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    				array(
    					'type' => 'select',
    					'label' => $this->l('Events:'),
    					'name' => 'name',
    					'required' => true,
    					'options' => array(
    						'query' => $this->getEvents($result = new DirectoryIterator($_SERVER['DOCUMENT_ROOT'].$this->_path.'/views/img'),'selectEvent'),
    						'id' => 'idevents',
    						'name' => 'name'
    					)
    				),
    Voici le code php, la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // Récupérer les dossiers et en faire la sélection des events
    public function getEvents($it,$name){
     
    	$result = array();
    	// pour chaque entree du repertoire
    	for( ; $it->valid(); $it->next()) {
    		// si c'est un repertoire et si ce n'est pas "." ou ".."
    		if($it->isDir() && !$it->isDot())
     
    		//$result[] : je crée un tableau pour stocker les informations
    			$result[] = array('idevents' => $it->getFilename(), 'name' => $it->getFilename());
    	}
    	return $result;
     }
    Merci,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WM21] Récupération des coordonnées de clic dans un champ Image
    Par pco3838 dans le forum Windev Mobile
    Réponses: 2
    Dernier message: 04/03/2017, 21h58
  2. Réponses: 5
    Dernier message: 24/01/2017, 15h51
  3. [SP-2010] Récupération du nom du fichier dans un champ calculé
    Par dolu007 dans le forum SharePoint
    Réponses: 1
    Dernier message: 04/12/2013, 01h47
  4. Réponses: 2
    Dernier message: 09/06/2011, 10h39
  5. Récupération des noms de champs d'une table
    Par Battomura dans le forum SQL
    Réponses: 2
    Dernier message: 24/03/2003, 10h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo