Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 15-09-2011 14:58:39

webdigit
Membre
Date d'inscription: 23-08-2011
Messages: 10

Zendx ne fonctionne pas dans script de vues

Bonjour,

je suis sur le développement d'une appli modulaire (implémentée par Zend_tool, pour donner une idée du schéma du MVC... je ne met pas tout smile)

Attention, c'est un peu long à cause du code...

Le problème : Jquery fonctionne très bien quand il est appelé depuis le layout (application/layouts/scripts/default.phtml) mais plus du tout lorsqu'il est appelé dans un script de vue (application/modules/default/views/scripts/index/index.phtml)

Merci pour votre aide. Je crois que cela n'aidera pas que moi, car j'ai lu pas mal de topic ouvert avec ce même genre de problème et je n'ai pas encore trouvé de réponse

Voici les infos...

Merci, merci et merci d'avance !!!


- application
---- configs
---- ---- application.ini (1)
---- layouts
---- ---- default
---- ---- ---- defaut-footer.phtml
---- ---- ---- defaut-header.phtml
---- ---- ---- defaut-message.phtml
---- ---- ---- defaut-navigation.phtml
---- ---- login
---- ---- ---- login-footer.phtml
---- ---- ---- login-header.phtml
---- ---- default.phtml (4)
---- ---- login.phtml
---- modules
---- ---- default
---- ---- ---- controllers
---- ---- ---- ---- IndexController.php (3)
---- ---- ---- ---- etc...
---- ---- ---- models
---- ---- ---- views
---- ---- ---- ---- filters
---- ---- ---- ---- helpers
---- ---- ---- ---- scripts
---- ---- ---- ---- ---- index
---- ---- ---- ---- ---- ---- index.phtml (5)
---- ---- ---- Bootstrap.php
---- ---- login
---- ---- roles
---- ---- users
---- ---- etc...
---- ---- Bootstrap.php (2)
---- views
- public
---- css
---- js

(1)apllication.ini (partie production)

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0

bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
autoloaderNamespaces[] = "Webdigit"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
resources.frontController.params.prefixDefaultModule = "1"

resources.view.encoding = "UTF-8"

phpSettings.date.timezone = "Europe/Paris"
resources.db.adapter = PDO_MYSQL
resources.db.params.host = xxxxxx
resources.db.params.username = xxxxxx
resources.db.params.password = xxxxxx
resources.db.params.dbname = xxxxxxx

resources.modules[] =
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

(2)Bootstrap.php (à la racine du répertoire modules)
<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initResponse(){
        $response = new Zend_Controller_Response_Http();
        $response->setRawHeader('Content-type: text/html; charset=ISO-8859-1');
        Zend_Controller_Front::getInstance()->setResponse($response);
    }
    protected function _initView()
    {
        // Initialize view
        $view = new Zend_View();
        $view->doctype('XHTML1_STRICT');
        $view->headTitle('Ma premiere application avec Zend');
        $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=ISO-8859-1');
        $request = new Zend_Controller_Request_Http();
        $base_url_appli = $request->getBaseUrl();
        //$view->headLink()->appendStylesheet($base_url_appli . '/css/default.css');
        //$view->headLink()->appendStylesheet($base_url_appli . '/js/jquery-ui-1.8.16.custom.css');
        $view->headLink()->appendStylesheet($base_url_appli . '/css/style.css');
        //$view->headScript()->appendFile($base_url_appli . '/js/jquery-1.6.4.js');
        //$view->headScript()->appendFile($base_url_appli . '/js/jquery-ui-1.8.16.custom.min.js');
        $view->headScript()->appendFile($base_url_appli . '/js/clock.js');
        $view->headScript()->appendFile($base_url_appli . '/js/js.js');
       
        //Jquery
        $view->addHelperPath('ZendX/JQuery/View/Helper', 'ZendX_JQuery_View_Helper');
        ZendX_JQuery::enableView($view);
        /* $view->jQuery()    ->setLocalPath($base_url_appli . '/js/jquery-1.6.4.js')
                        ->setUILocalPath($base_url_appli . '/js/jquery-ui-1.8.16.custom.min.js')
                        ->addStyleSheet($base_url_appli . '/js/jquery-ui-1.8.16.custom.css'); */
        $view->jQuery()    ->setLocalPath($base_url_appli . '/js/jquery-1.6.4.js')
                        ->setUILocalPath($base_url_appli . '/js/jquery-ui-1.8.16.custom.min.js');
        //$view->jQuery()->enable();
        //$view->jQuery()->uiEnable();
       
       
        // Add it to the ViewRenderer
        $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
        $viewRenderer->setView($view);
        //Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
        // Return it, so that it can be stored by the bootstrap
        return $view;
    }
    protected function _initViewHelpers(){
        //$view = $this->bootstrap('layout')->getResource('layout')->getView();
       
    }
    protected function _initNavigation()  {
        $view = $this->bootstrap('layout')->getResource('layout')->getView();
        $config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'nav');
        //$config = require_once (APPLICATION_PATH . 'configs/navigation.php');
        $view->navigation(new Zend_Navigation($config));
    }
    protected function _initPlugins(){
        $front = Zend_Controller_Front::getInstance();
        $front->registerPlugin(new Webdigit_Controller_Plugin_Acl());
    }
    protected function _initTranslate(){
        $locale = new Zend_Locale(); // Nous ne passons pas d'argument, comme ça il va rechercher la langue de notre visiteur
        //Traduction des messages de validation de formulaires
        $translate = new Zend_Translate('array', APPLICATION_PATH.'/../languages/fr/validate_form.php', 'fr');
        $translate->setLocale($locale);
        Zend_Registry::set('translate', $translate);
    }
}

(3)default/controllers/IndexControllers (à noter le choix du layout à rendre)

class Default_IndexController extends Zend_Controller_Action
{

    public function init()
    {
        //Si on est pas identifié, on est redirigé automatiquement vers la page de login
        $auth = Zend_Auth::getInstance();
        if (!$auth->hasIdentity()) {
            $this->_helper->redirector('index', 'index', 'login');
        }
        
        //Choix du layout pour le rendu des vues
        $this->_helper->layout->setLayout('default');
    }

    public function indexAction()
    {
        //$link = $this->view->ajaxLink("Link Name",".default/index/index/",array('update' => '#conteneurtest'));//NE FONCTIONNE PAS !!!
Je voudrais pouvoir faire un appel à mon jQuery ici, l'ajouter à ma vue et lors de l'affichage, que mon jQuery fasse ce que je lui demande... mais cela ne fonctionne pas
       
    }


}

(4)application/layouts/scripts/default.phtml (Layout chargé via le controller index du module default. A noter ici les Render les layout. Peut être source de souci avec ce fameux zendX ????)

<?php echo $this->doctype() ?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php echo $this->headTitle() ?>
<?php echo $this->headLink() ?>
<?php echo $this->headStyle() ?>

<!--[if lt IE 8]>
    <link href="style_IE.css" rel="stylesheet" type="text/css" media="all" />
    <![endif]-->

<?php $ajaxlink = $this->ajaxLink("Show me something","default/index/index/",array('update' => '#content11')); ?>
<?php $dp1 = $this->datePicker("dp1",'',array('defaultDate' =>date('Y/m/d', time()))); ?>   
Ici le date pickerfonctionne !!! A noter que j'ai du mettre $this->jQuery() après l'appel au datePicker, sinon il ne me créait pas le onload.   
<?php echo $this->jQuery(); ?>
<?php echo $this->headScript() ?>
<?php echo $this->headMeta() ?>
</head>
<body>

    <div class="container">
        <!-- HEADER -->
        <div class="header">
           
           
           
           
           
        <?php echo $this->render('/default/default-header.phtml') ?>

            <div class="menu">





            <?php echo $this->render('/default/default-navigation.phtml') ?>
            </div>
        </div>

        <!-- CONTENT -->
        <div class="content">
            <div class="content_res">



            <?php echo $this->render('/default/default-message-error.phtml') ?>
                <div class="leftblock vertsortable">
                   
                   
                <?php echo $this->layout()->content; ?>
                <?php echo $ajaxlink; ?>       
                <div id="content11"></div>
                <?php echo $dp1; ?>
                </div>
                <div class="rightblock vertsortable">
                    <div class="gadget">
                        <div class="titlebar vertsortable_head">
                            <a href="#" class="hidegadget" rel="hide_block"><img
                                src="<?php echo PUBLIC_PATH; ?>images/spacer.gif" alt="picture"
                                width="19" height="28" /> </a>
                            <h3>Date &amp; Time</h3>
                        </div>

                        <div class="gadgetblock">
                            <div class="whiteblock">
                                <p class="timeclock">
                                    <img src="<?php echo PUBLIC_PATH; ?>images/icon_clock.gif"
                                        alt="picture" width="26" height="26" /> <span id="tm">11:57</span>
                                </p>
                                <p class="light nobottom p_center">20th June, 2009, Friday</p>
                            </div>
                            <!-- Datepicker -->
                            <h3>
                                <img src="<?php echo PUBLIC_PATH; ?>images/icon_calendar.gif"
                                    alt="picture" width="21" height="21" class="calendar" />Calendar
                            </h3>

                            <div id="datepicker"></div>
                            <div class="clr"></div>
                            <p class="bot8px">
                                <a href="#" class="colourbutton button_orange"><span><span>+ Add
                                            Event</span> </span> </a>&nbsp;<a href="#"
                                    class="colourbutton button_blue"><span><span>List Events</span>
                                </span> </a>
                            </p>
                        </div>
                    </div>
                </div>
                <div class="clr"></div>
            </div>
        </div>

        <!-- FOOTER -->
        <div class="footer">
           
           
           
           
           
    <?php echo $this->render('/default/default-footer.phtml') ?>
        </div>
    </div>
</body>
</html>

(5)application/modules/default/views/scripts/index/index.phtml (j'essaie ici d'appeler DatePicker ou ajaxLink et impossible)

$this->ajaxLink("Show me something","default/index/index/",array('update' => '#content11')); // NE MARCHE PAS

Hors ligne

 

#2 15-09-2011 22:09:59

webdigit
Membre
Date d'inscription: 23-08-2011
Messages: 10

Re: Zendx ne fonctionne pas dans script de vues

Bon,

après avoir testé sur un MVC 'simple et de base' et en ayant suivi scrupuleusement la doc, j'ai toujours le même souci...

A savoir :

- dans une vue (views/scripts/index/index.phtml)

   
    <form method="post" action="/hello/world">
        Pick your Date: <?php echo $this->datePicker("dp1", '', array('defaultDate' =>date('Y/m/d', time())));?>
        <input type="submit" value="Submit" />
    </form>
    <?php echo $this->jQuery(); ?>

    Ceci fonctionne.



    Par contre si je fais ceci :

    <?php echo $this->jQuery(); ?>
    <form method="post" action="/hello/world">
        Pick your Date: <?php echo $this->datePicker("dp1", '', array('defaultDate' =>date('Y/m/d', time())));?>
        <input type="submit" value="Submit" />
    </form>

    Ça ne fonctionne pas.

application.ini
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1


bootstrap.php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initView() {
    $view = new Zend_View();
    $view->addHelperPath('ZendX/JQuery/View/Helper/', 'ZendX_JQuery_View_Helper');
     
    $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
    $viewRenderer->setView($view);
    Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
    }

}

Quelqu'un a une idée ? parce que la je sèche sad

Merci !

Hors ligne

 

#3 15-09-2011 22:44:45

webdigit
Membre
Date d'inscription: 23-08-2011
Messages: 10

Re: Zendx ne fonctionne pas dans script de vues

Yes, j'ai trouvé...

le souci était dans mon application.ini

Le voici modifié (notez les ; avant ce qu'il fallait enlever). Peut être ça pourra aider quelqu'un... qui sait !

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0

bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
autoloaderNamespaces[] = "Webdigit"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
resources.frontController.params.prefixDefaultModule = "1"

;resources.view[] =
;pluginPaths.ZendX_Application_Resource_ = "ZendX/Application/Resource"
;resources.view.encoding = "UTF-8"

phpSettings.date.timezone = "Europe/Paris"
resources.db.adapter = PDO_MYSQL
resources.db.params.host = xxxx
resources.db.params.username = xxxx
resources.db.params.password = xxxx
resources.db.params.dbname = xxxx

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