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

Autres composants PHP Discussion :

[View] Erreur de require_once dans les vues avec ZF 1.6 RC1 [ZF 1.6]


Sujet :

Autres composants PHP

  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut [View] Erreur de require_once dans les vues avec ZF 1.6 RC1
    Je fais quelques require_once dans des vues, vers des fichiers présents dans le même répertoire que la vue.
    Avec ZF 1.5.3, pas de problèmes.
    Avec ZF 1.6.0 RC1, échec de tous les require_once().
    Qu'est-ce qui a changé dans ce domaine entre les 2 versions ?
    Le message d'erreur en 1.6.0 RC1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: require_once(DisciplineViewForm.php) [function.require-once]: failed to open stream: No such file or directory in zend.view://..\application\modules\manager\views\scripts\discipline/add.phtml on line 2
    Si je provoque une erreur de même type dans la 1.5.3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: require_once(Discipline2ViewForm.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\wamp\www\eclipse\osiris\application\modules\manager\views\scripts\discipline\add.phtml on line 2

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Points : 123
    Points
    123
    Par défaut
    essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once("DisciplineViewForm.php")
    oubien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include 'DisciplineViewForm.php';
    J'espere que sa t' aidera

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Je n'ai pas un problème de require (puisque ça fonctionne avec le ZF 1.5.3), mais avec le path utilisé pour les scripts de vue dans le ZF 1.6.0 RC1.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Points : 123
    Points
    123
    Par défaut
    oui mais peut etre que les 2 n'interpretent pas pareil ces fonctions, enfin bon, apres, rien ne coute d'essayer, le probleme ne vient surement pas d'ici, mais essaie quand meme

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Ce n'est pas le ZF qui interprète ces fonctions, c'est PHP.
    Cela dit, j'ai essayé par acquis de conscience, et cela ne change rien.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Points : 123
    Points
    123
    Par défaut
    ok hihi, je ne voulais pas t'importuner mais parfois on cherche des erreurs bien loin alors qu'elles sont si simples ...

    Sinon, es tu sure que le chemin vers ton fichier est bon ? sinon, verrifis que ton fichier ne soit pas protegé en lecture/ecriture/etc... dans les propriétés de celui-ci .

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Non, tu ne m'importunes pas, je te remercie de ton aide.
    Le chemin est bon, puisque je n'ai pas changé mes scripts mais uniquement la version du ZF. Avec 1.5.3 => tout baigne. Avec 1.6.0, tout bloque.
    Je pense que c'est un changement de la façon dont Zend_View intègre les scripts de vue (peut-être un include ?) qui modifie les require dans ces scripts. Mais je n'ai pas vu trace de cette modification dans la release.

  8. #8
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    est-ce que tu peux vérifier le chemin d'exécution de ton fichier phtml, par exemple en faisant un echo __FILE__ dans ta vue ?

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    En effet, le chemin a changé.

    Avec ZF 1.5.3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    C:\Program Files\wamp\www\eclipse\osiris\application\modules\teacher\views\scripts\lesson\edit.phtml
    Avec ZF 1.6.0 RC1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zend.view://..\application\modules\teacher\views\scripts\lesson/edit.phtml

  10. #10
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Oui, il y a bien un changement dans la méthode run() de Zend_View :

    Dans la 1.5.2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        protected function _run()
        {
            include func_get_arg(0);
        }
    Et dans la 1.6.0RC1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        protected function _run()
        {
            if ($this->_useViewStream && $this->useStreamWrapper()) {
                include 'zend.view://' . func_get_arg(0);
            } else {
                include func_get_arg(0);
            }
        }
    Je ne sais pas ce que sont les ViewStream et StreamWrappers...

  11. #11
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    En effet. Et la doc n'est pas à jour : http://framework.zend.com/manual/fr/....abstract.html

  12. #12
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    En général, dans la vue, pour inclure un autre script on utilise plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $this->render('script.phtml');
    Le stream wrapper a été introduit dans ZF 1.6 afin de permettre l'utilisation des short tags même si short_open_tag est désactivé

  13. #13
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Tu as raison, mais mes require servent à inclure des classes perso de génération de formulaire. Donc je ne peux pas faire un render, à moins que je ne me trompe ?

  14. #14
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    En ce cas, ne serait-il pas judicieux de faire un helper ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $this->nomDuHelper()
    [Edit] Pour rappel, Julien Pauli a traduit un article sur le sujet : http://julien-pauli.developpez.com/t...actionhelpers/

  15. #15
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    C'est une bonne idée.
    Mais concrètement, avec cette nouveauté de Zend_View, comment écrire le path pour accéder à un fichier présent dans le même répertoire que le script qui l'appelle ?

  16. #16
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Je ne sais pas, puisque ZF n'a jamais été prévu pour faire comme cela

  17. #17
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    J'ai une classe de génération de formulaires en XHTML (qui s'appuie sur les données de Zend_Form). Pour chaque controller, j'étends cette classe pour factoriser les formulaires add/edit. Je crée donc une classe que j'enregistre dans le dossier des vues (/view/scripts/) du controller (cela me semble plus logique) => donc autoload impossible => donc require obligatoire.
    Est-ce que ce n'est pas une bonne pratique ?

  18. #18
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    De mon point de vue, un formulaire est bien plus qu'un script de vue : c'est un modèle. Le formulaire a certes une partie visible (XHTML) mais il a aussi et surtout des interfaces complètes de validation et de filtrage.

    De mon côté, je mets les formulaires dans :
    application/modules/*/models/Form/*
    Avec un PluginLoader, j'ai accès à mes formulaires depuis n'importe quel endroit de l'application.

  19. #19
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    En fait, j'ai 2 classes par formulaire, pour essayer de séparer au maximum les couches.

    Un ControllerForm, placé dans les modèles, qui étend Zend_Form, et qui ne comprend que les données (champs, filters, validators...), aucune info de vue (pas de label, d'exemples, de bouton submit...).
    Un ViewForm, placé dans les vues, qui étend ma classe perso de rendu des formulaires, qui ne contient aucune donnée, que les infos de vue (rendu des erreurs, labels, exemples, liens d'aide...). Les données (value, checked, error...) sont extraites de l'objet ControllerForm passé en paramètre au constructeur du ViewForm.

    Vue et métier étant complètement séparés, on peut donc faire 2 rendus tout à fait différents du même ControllerForm.

    Je sais que ça dépasse le sujet de ce post, mais qu'en penses-tu ?

  20. #20
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Non, je ne suis pas en faveur de cette approche. Pour moi, les contrôleurs dénotent vraiment une interaction directe avec l'utilisateur. S'il y a un contrôleur, c'est qu'il y a des actions (et donc des URLs) accessibles par l'utilisateur et qui lui permettent d'agir sur les modèles.

    Si tu as besoin d'un formulaire, je crois que le mieux adapté est de faire comme le suggère Matthew, à savoir d'utiliser un plugin de chargement de formulaires.
    Tu peux aussi utiliser des plugins pour décorer les formulaires dans ta vue, si tu souhaites séparer les concepts.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Erreur d'affichage dans les boite de dialogue windows
    Par DEVELSI dans le forum Windows
    Réponses: 3
    Dernier message: 26/06/2007, 08h31
  2. pb de cotes dans les données avec findfirst
    Par patbeautifulday1 dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/05/2007, 15h57
  3. Colonnes conditionnelles dans les vues
    Par n_moalla dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 12/10/2006, 10h22
  4. [CSS] espace dans les li avec retour à la ligne
    Par grinder59 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 04/07/2006, 11h00
  5. [VBS] Ecrire dans les Eventlog avec VBS
    Par Hakkou dans le forum VBScript
    Réponses: 1
    Dernier message: 04/10/2004, 14h50

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