Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour, c'est encore moi....
J'essaye d'activer le DOJO mais je n'y arrive pas.
J'ai pourtant tenté plusieurs choses :
dans mon fichier principal index.php :
$view = new Zend_View(); Zend_Dojo::enableView($view);
J'ai lu sur un autre topic que si on utilisait le viewRenderer, il fallait le spécifié, mais moi j'utilise actionStack :
$actionStack = Zend_Controller_Action_HelperBroker::getStaticHelper('actionStack'); // la section de la page, et le controleur qui va l'utiliser //le controlleur index va rendre l'action footerAction dans la vue footer $actionStack->actionToStack('footer','index');
Par ailleurs, ma balise body est bien de classe tundra,
et dans mon fichier view j'ai :
if ($this->dojo()->isEnabled()){ $this->dojo()->setLocalPath('/html/js/dojo/dojo.js') ->dojo()->addStylesheetModule('dijit.themes.tundra'); }
j'ai téléchargé les javascript de dojo (alors que je croyais qu'ils étaient inclus avec Zend) et je les ai bien placé dans /monprojet/html/js/.
Dans le code source de ma page, le javascript n'est pas chargé, et les elements du formulaire sont de type simples (non dojo)...
Je suis à l'écoute de quelqu'un qui aurait une idée...
merci bien par avance.
Dernière modification par gostbuster (24-03-2009 09:15:29)
Hors ligne
Les infos que tu donnes sont un peu légère pour être sur de ce qu'il manque mais je pense que c'est
Zend_Controller_Action_HelperBroker::addPath('Zend/Dojo/View/Helper/', 'Zend_Dojo_View_Helper');
dans ton index.php vu que tu n'utilises pas de bootstrap.
Hors ligne
Bonjour et merci d'avoir répondu,
Du coup je ne sais plus si j'ai un bootstrap ou non :
j'ai un index.php dans mon dossier RACINE/html/index.php
dans cet index, je passe par un frontController, et je travaille en trois couches:
RACINE/application/models
RACINE/application/views
RACINE/application/controllers
Donc je pense avoir un bootstrap, non? A moins d'avoir mal compris le concept.
Je teste ta ligne le dahu mais apparement, il me dit :
Plugin by name 'Dojo' was not found in the registry; used paths: Zend_View_Helper_: Zend/View/Helper/;../application/views\helpers/
Je cherche donc actuellement le bon path que je dois fournir à la méthode....
Hors ligne
Il faut que tu ajoutes le addpath dans ton view.
Comme je ne sais pas comment tu le définis j'ai un peu de mal.
Tu devrais avoir quelque part un
$view = new Zend_View;
alors ajoute
$view->addHelperPath('Zend/Dojo/View/Helper/', 'Zend_Dojo_View_Helper')
C'est la même chose mais écrite différemment.
Hors ligne
Rien a faire cela ne marche pas même si j'ai bien mi un new Zend_View
ci joint mon fichier index.php dans son intégralité pendant que j'essaye de trouver une solution.
Merci
<?php error_reporting(E_ALL|E_STRICT); ini_set('display_errors', 1); date_default_timezone_set('Europe/Paris'); // mise en place des répertoires et chargement des classes set_include_path('.' . PATH_SEPARATOR . '../library' . PATH_SEPARATOR . '../application/models/' . PATH_SEPARATOR . get_include_path()); include "Zend/Loader.php"; Zend_Loader::registerAutoload(); /** * Configuration du site */ $config = new Zend_Config_Ini( '../application/config.ini','parametres'); $registry = Zend_Registry::getInstance(); $registry->set('config', $config); // Mise en place de la BDD try{ $db = Zend_Db::factory($config->db); $db->getConnection(); Zend_Db_Table::setDefaultAdapter($db); }catch(Exception $e){ exit($e->getMessage()); } // setup controller $frontController = Zend_Controller_Front::getInstance(); //$frontController->throwExceptions(true); $frontController->setRequest(new Zend_Controller_Request_Http()); $frontController->throwExceptions(false); $frontController->setControllerDirectory('../application/controllers'); $layout =Zend_Layout::startMvc($config->layout); //$layout =Zend_Layout::startMvc(array('layoutPath' => '../application/layouts')); //$layout->setLayout('template'); $view = new Zend_View(); Zend_Dojo::enableView($view); $actionStack = Zend_Controller_Action_HelperBroker::getStaticHelper('actionStack'); // la section de la page, et le controleur qui va l'utiliser //le controlleur index va rendre l'action footerAction dans la vue footer $actionStack->actionToStack('footer','index'); //idem $actionStack->actionToStack('menu','menu'); //idem $actionStack->actionToStack('header','index'); //$configRoute = new Zend_Config_Ini($appPath .'../application/routes.ini'); //$frontController->getRouter()->addConfig($configRoute); // run! $frontController->dispatch(); // dispatche !
Hors ligne
par ailleurs, petite précision, si je ne mets pas les deux lignes suivantes :
$view = new Zend_View(); Zend_Dojo::enableView($view);
Ma vue s'affiche....
Hors ligne
Je ne comprends pas ton index.php et surtout pourquoi tu mets des actionstack dans ton index.php...
Je ne les utilises pas pour l'instant mais je ne pense pas que ca se mette la mais plutot dans ton controlleur.
index.php
<?php error_reporting(E_ALL|E_STRICT); date_default_timezone_set('Europe/Paris'); define('SYSTEM_PATH', dirname(__FILE__)); define('APPLICATION_PATH', dirname(SYSTEM_PATH) . DIRECTORY_SEPARATOR . 'application'); define('RESOURCE_PATH', dirname(SYSTEM_PATH) . DIRECTORY_SEPARATOR . 'resources'); define('CONFIG_PATH', dirname(SYSTEM_PATH) . DIRECTORY_SEPARATOR . 'config'); // set include path to include files in our library directory on which the // zend framework is located set_include_path(get_include_path() . PATH_SEPARATOR . dirname(SYSTEM_PATH) . DIRECTORY_SEPARATOR . 'library' ); // load Zend_Loader class and make it automatically auto load all of our classes, // no more long includes/requires and Zend_Loader::loadClass require_once 'Zend/Loader.php'; Zend_Loader::registerAutoload(); // Démarrage des sessions Zend_Session::start(); // // setup database config file by loading configuration through our ini file located at resource directory $registry = new Zend_Registry(array(), ArrayObject::ARRAY_AS_PROPS); Zend_Registry::setInstance($registry); $config = new Zend_Config_Ini(CONFIG_PATH . DIRECTORY_SEPARATOR . 'config.ini','general'); $registry->configuration = $config; // setup database resource through our config file $config = $registry->configuration; try{ $db = Zend_Db::factory($config->db); Zend_Db_Table::setDefaultAdapter($db); }catch(Exception $e){ exit($e->getMessage()); } $registry->db=$db; // Configuration du cache $frontendOptions = array( 'lifetime' => 7200, // cache lifetime of 2 hours, 'automatic_serialization' => true ); $backendOptions = array( 'cache_dir' => '../tmp/' // Directory where to put the cache files ); $cache=Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions); Zend_Registry::set('cache', $cache); $view = new Zend_View; $view->doctype('XHTML1_TRANSITIONAL'); $view->addHelperPath('Zend/Dojo/View/Helper/', 'Zend_Dojo_View_Helper') ->addHelperPath('dahuu/View/Helper', 'dahuu_View_Helper_'); $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view); Zend_Controller_Action_HelperBroker::addHelper($viewRenderer); // set-up layout options to be used for our project $layoutOptions = array( 'layoutPath' => APPLICATION_PATH . DIRECTORY_SEPARATOR . 'templates', // our template directory 'layout' => 'main' // our default layout ); // set layout configuration to Zend_Layout class Zend_Layout::startMvc($layoutOptions); // define default modules directory $defaultModules = array( 'default' => APPLICATION_PATH . DIRECTORY_SEPARATOR . 'default', 'admin' => APPLICATION_PATH . DIRECTORY_SEPARATOR . 'admin' ); // get front controller instance $controller = Zend_Controller_Front::getInstance(); // get router from front controller $router = $controller->getRouter(); // iterate default modules { foreach($defaultModules as $key => $module) { // add default controller directories $controller->addControllerDirectory($module . DIRECTORY_SEPARATOR . 'controllers', $key); // add models directory to include path set_include_path(get_include_path() . PATH_SEPARATOR . $module . DIRECTORY_SEPARATOR . 'models'); } } $controller->throwExceptions(false); // should be turned on in development time // define modules directory $moduleFolder = APPLICATION_PATH . DIRECTORY_SEPARATOR . 'modules'; // this is where the code that makes our application extendable through modules { $modules = scandir($moduleFolder); //scan module folder for saved modules (top level modules will be scanned {application, members}) foreach ($modules as $module) { if($module[0] == '.') continue; // if search directory starts with a dot, skip directory $subModulePath = $moduleFolder . DIRECTORY_SEPARATOR . $module; // this will be the submodules directory directly under parent module. e.g. application if(is_dir($subModulePath)) { $subModules = scandir($subModulePath); // scan the submodules directory for specific modules defined foreach($subModules as $singleModule) { if($singleModule[0] == '.') continue; // if search directory starts with a dot, skip directory $modulePath = $subModulePath . DIRECTORY_SEPARATOR . $singleModule; // this will be the actual module or specific module found if(is_dir($modulePath)) { // add to include path, models directory set_include_path(get_include_path() . PATH_SEPARATOR . $modulePath . DIRECTORY_SEPARATOR . 'models'); // add controllers to controller directory $controller->addControllerDirectory($modulePath . DIRECTORY_SEPARATOR . 'controllers', $singleModule); // add to router // if module is under application set router to default directory if($module == 'default') { $router->addRoute('', new Zend_Controller_Router_Route($singleModule)); } else { // if module is under not a member of default module set router to /${module}/{singleModule} $router->addRoute($module . '/' . $singleModule, new Zend_Controller_Router_Route($module . '/' . $singleModule, array( 'module' => $singleModule, 'controller' => 'index' ) )); } } // end checking {is_dir($modulePath)} } // end loop of submodules directory } // end checking {is_dir($subModulePath)} } // end looping of modules directory } // end group bracket // run application try { $controller->dispatch(); // dispatche ! } catch (Exception $exception) { // attrape toute exception exit($exception->getMessage()); }
Essaye avec ca, il fonctionne très bien chez moi avec des modules et dojo même si maintenant je suis passé à plus complet avec un bootstrap et un initializer.
Hors ligne
Bonjour, après avoir remanié mon code, le dojo est enfin activé, "ca marche", ou du moins j'ai bien des éléments de type dojo.
Un grand merci.
Hors ligne
Pages: 1