Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Salut la compagnie
je debute avec ZF et je voulai m'assurer de qqchose.
1°) Où mettre le front controller ? (dans mon project ou plutot dans public ?)
mon_projet/ >application/ >contollers/ >models/ >views/ >library >public/ >css/ >img/
2°) j'ai suivit ce tutoriel de Rob Allen sur develloppez à la lettre et le helper BaseUrl ne retourne rien à mon layout. Si quelqu'un peut m'aider ?
Dernière modification par BeRoots (16-05-2008 12:38:23)
Hors ligne
Salut à toi.
1°)
Perso tout mon code applicatif est dans le dossier application.
Seul mon dossier public est accessible depuis les urls.
Du coup, dans mon dossier public j'ai un fichier index.php qui contient ça
<?php require '../application/bootstrap.php';
Je suppose que quand tu parles du front tu veut dire bootstrap
Hors ligne
je parle bien du bootstrap (front controller ou encore contrôleur frontal)...
en gros c'est sans doute suivant les .htaccess choisi pour apache que l'on peut décider...
Donc y a t'il une quelconque influense sur le retour de baseUrl de l'helper mis en place dans le tutoriel de rob allen precisé dans mon premier post ?
en gros j'ai suivi l tutoriel mais baseUrl ne me retourne rien ?
j'ai pourtant ce script BaseUrl.php dans helpers/ :
<?php class Zend_View_Helper_BaseUrl { function baseUrl() { $fc = Zend_Controller_Front::getInstance(); return $fc->getBaseUrl(); } } ?>
Si quelqu'un peut m'aider sur ce point
Merci d'avance.
Hors ligne
Hello,
Quel est ton code dans la view ?
A+
Hors ligne
@lethak: je n'utilise pas d'alias. j'accède pour les tests de ce tuto via http://localhost/zf-tutorial/ comme l'exemple et mon bootstrap est dans public. (en gros du tout pareil que dans l'exemple bien que je trouve bizard le fait que l'on n'ai juste à créé l'helpers dans helpers pour que celui-ci devienne fonctionnel...
sinon voici le code du layout:
o<?php // Gestion des erreurs error_reporting(E_ALL|E_STRICT); ini_set('display_errors', 'on'); // Definition du fuseau horaire date_default_timezone_set('Europe/Paris'); // modification du dossier include path vers le dossier include path de la library //ini_set('include_path', ini_get('include_path').PATH_SEPARATOR.'../library/'); // 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()); // Inclusion du loader et appel de la methode d'autochargement de classe require_once "Zend/Loader.php"; Zend_Loader::registerAutoload(); // Lecture de la configuration et mise en registre (localhost ou production suivant si on-line ou off-line) $config = new Zend_Config_ini("../../../nowww/ZFconfig_zf-tutorial.ini", 'localhost'); $registry = Zend_Registry::getInstance(); $registry->set('config', $config); // instanciation du controller frontale $front = Zend_Controller_Front::getInstance(); $front->throwExceptions(true); $front->setControllerDirectory('../application/controllers'); Zend_Layout::startMvc(array('layoutPath'=>'../application/layouts')); // Mise en place de la BDD $db = Zend_Db::factory($config->db); Zend_Db_Table::setDefaultAdapter($db); // initialisation de la session session_start(); // execution de l'application $front->dispatch(); ?>
suivit du code du bootstrap:
o<?php // Gestion des erreurs error_reporting(E_ALL|E_STRICT); ini_set('display_errors', 'on'); // Definition du fuseau horaire date_default_timezone_set('Europe/Paris'); // modification du dossier include path vers le dossier include path de la library //ini_set('include_path', ini_get('include_path').PATH_SEPARATOR.'../library/'); // 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()); // Inclusion du loader et appel de la methode d'autochargement de classe require_once "Zend/Loader.php"; Zend_Loader::registerAutoload(); // Lecture de la configuration et mise en registre (localhost ou production suivant si on-line ou off-line) $config = new Zend_Config_ini("../../../ZFconfig_zf-tutorial.ini", 'localhost'); $registry = Zend_Registry::getInstance(); $registry->set('config', $config); // instanciation du controller frontale $front = Zend_Controller_Front::getInstance(); $front->throwExceptions(true); $front->setControllerDirectory('../application/controllers'); Zend_Layout::startMvc(array('layoutPath'=>'../application/layouts')); // Mise en place de la BDD $db = Zend_Db::factory($config->db); Zend_Db_Table::setDefaultAdapter($db); // initialisation de la session session_start(); // exécution de l'application $front->dispatch(); ?>
et enfin le code de vue:
<p><a href="<?php echo $this->url(array('controller'=>'index', 'action'=>'add')); ?>/index/ajouter">Ajouter un nouvel album</a></p> <table> <tr> <th>Title</th> <th>Artist</th> <th> </th> </tr> <?php foreach($this->albums as $album) : ?> <tr> <td><?php echo $this->escape($album->title);?></td> <td><?php echo $this->escape($album->artist);?></td> <td> <a href="<?php echo $this->url(array('controller'=>'index', 'action'=>'edit', 'id'=>$album->id));?>">Modifier</a> <a href="<?php echo $this->url(array('controller'=>'index', 'action'=>'delete', 'id'=>$album->id));?>">Spprimer</a> </td> </tr> <?php endforeach; ?> </table>
PS. le code de l'helper suggérer dans le tutorial est le même que dans mon précédent message
toujour pas moyen de récupèrer ce baseUrl. Si quelqu'un a une idée
Merci d'avance.
Hors ligne
en fait il doit retourner $_SERVER['HTTP_HOST'] + le chemin jusque au dossier public ???
l'intrigue quoi ?
pourtant on doit bien passer ce paramètre en vue du Zend_Config dans le bootstrap nan?
Hors ligne
Salut,
Si j'ai bien compris les explications dans le manuel et dans le code, les fonctions getBaseUrl() et setBaseUrl() ne sont là que pour émuler le RewriteBase d'Apache que tu aurais écris dans ton fichier .htaccess.
C'est à dire:
$fc->setBaseUrl('/'); // <-> RewriteBase / $fc->getBaseUrl(); //sortie: / et non http://www.example.com/ $fc->setBaseUrl('/subfolder/') ; // <-> RewriteBase /subfolder/ $fc->getBaseUrl(); //sortie: /subfolder et non http://www.example.com/subfolder
d'où ton interrogation.
Hors ligne
C'est bien ce qui me semblais, par default le zf ne s'occupe pas du nom de domaine.
C'est pour cette raison par exemple que pour gérer des routes par les sous domaines j'ai du coder un router spécifique...
Hors ligne