J'ai actuellement un formulaire de recherche dans le contrôleur de recherche, de sorte que la seule façon dont je peux y accéder est à travers /search/
. Je dois refactoriser mon code pour que ce formulaire de recherche apparaisse non seulement dans le Search Controller mais aussi globalement sur tout le site.Zend - refactoring pour inclure un formulaire globalement sur le site
(Le code isnt exact que je devais retaper certaines d'entre elles)
Ma classe qui étend Zend_Form
est situé dans application/forms/forms/SearchForm.php
:
class Form_SearchForm extends Zend_Form {
public function init() {};
}
Mon contrôleur de recherche est quelque chose comme ..
class SearchController extends Zend_Controller_Action
{
public function search() {
$searchForm = new Form_SearchForm();
$this->view->form = $searchForm;
}
}
Dans mon Bootstrap.php j'ai un autochargeur pour les modèles:
protected function _initAutoload() {
$autoLoader = Zend_Loader_Autoloader::getInstance();
$resourceLoader = new Zend_Loader_Autoloader_Resource(
array(
'basePath' => APPLICATION_PATH,
'namespace' => '',
'resourceTypes' => array(
'form' => array(
'path' => 'forms',
'namespace' => 'Form_',
),
'model' => array(
'path' => 'models/',
'namespace' => 'Model_',
),
),
)
);
return $autoLoader;
}
Je me demande où je peux stocker mon code afin que ce le formulaire de recherche est généré dans la vue.
Mon fichier global de mise en page est situé dans application/layouts/scripts/layout.phtml
et recrache actuellement une zone de contenu dynamique:
<div id="main">
<?php echo $this->layout()->content;?>
</div>
Dois-je ajouter que la forme à ce layout.phtml ou est-il un contrôleur générique que je devrais utiliser?
Editer: Désolé de ne pas spécifier cela aussi, mais que faire si par exemple je voulais ne pas l'inclure pour 1-2 pages spéciales (peut-être une section admin) .. si je l'ai codé en dur dans layout.phtml .. ou devrais-je servir un fichier de mise en page différent pour dire, une zone d'administration?
Je suis désolé que vous m'ayez perdue, est-ce que cela vous dérange de m'étendre là-dessus et de l'abrutir pour mon débutant? –
quelle option préférez-vous? Je ne pense pas que je connais la bonne voie. Mais le plus juste, je pense, est le premier, mais c'est trop compliqué maintenant. –
faire une classe un singleton est simple, je vais ajouter un code pour cela maintenant. Comment ajouter une instance de Form_SearchForm à Zend_Registry, vous pouvez le déterminer par vous-même :) –