Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 16-05-2008 12:37:48

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

Ou mettre le front controller ???

Salut la compagnie smile

je debute avec ZF et je voulai m'assurer de qqchose.

1°) Où mettre le front controller ? (dans mon project ou plutot dans public ?)

Code:

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)


wink Non au language SMS sur nos forums wink

Hors ligne

 

#2 16-05-2008 14:04:19

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Ou mettre le front controller ???

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

Code:

<?php
require '../application/bootstrap.php';

Je suppose que quand tu parles du front tu veut dire bootstrap smile

Hors ligne

 

#3 16-05-2008 19:24:57

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

Re: Ou mettre le front controller ???

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/ :

Code:

<?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 wink
Merci d'avance.


wink Non au language SMS sur nos forums wink

Hors ligne

 

#4 16-05-2008 20:14:05

lethak
Membre
Lieu: France
Date d'inscription: 05-04-2008
Messages: 168

Re: Ou mettre le front controller ???

@BeRoots: pense a préciser (dans .htaccess) un RewriteBase = a ton alias si tu en utilise un.


IT Dev @Twitter

Hors ligne

 

#5 16-05-2008 20:29:59

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Ou mettre le front controller ???

Hello,

Quel est ton code dans la view ?

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#6 16-05-2008 21:51:29

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

Re: Ou mettre le front controller ???

@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:

Code:

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:

Code:

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:

Code:

<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>&nbsp;</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 wink

toujour pas moyen de récupèrer ce baseUrl. Si quelqu'un a une idée wink
Merci d'avance.


wink Non au language SMS sur nos forums wink

Hors ligne

 

#7 16-05-2008 22:16:18

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Ou mettre le front controller ???

Moi perso j'utilise pas $fc->getBaseUrl();
Que doit il retourner? l'url depuis le nom de domaine? ou le "realpath" genre /.

Hors ligne

 

#8 16-05-2008 23:46:19

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

Re: Ou mettre le front controller ???

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?


wink Non au language SMS sur nos forums wink

Hors ligne

 

#9 18-05-2008 15:16:20

-=blu3+3y3s=-
Membre
Lieu: Toulouse
Date d'inscription: 01-04-2008
Messages: 47

Re: Ou mettre le front controller ???

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:

Code:

$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

 

#10 18-05-2008 17:18:21

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Ou mettre le front controller ???

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

 

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