2009-01-07 4 views
5

Quelle est la meilleure pratique pour créer une barre latérale dynamique ou d'autres emplacements de mise en page sans contenu avec zend framework. A ce moment j'ai créé un contrôleur que j'ai appelé WidgetsController. Dans ce contrôleur, j'ai défini certaines actions avec un segment de réponse 'sidebar' pour ma barre latérale et dans IndexController je les appelle avec $ this-> view-> action(); fonction mais je ne pense pas que ce soit une bonne pratique pour créer une barre latérale dynamique. Merci pour vos réponses.Meilleure pratique de création d'une barre latérale dynamique avec zend framework

Répondre

8

question Vous ne fournit pas beaucoup de détails. En général, je dirais charger la barre latérale en tant que modèle de vue, via les méthodes de rendu/partiel de la vue. Ainsi, à l'intérieur d'une vue:

//$data is dynamic data you want to pass to the sidebar 
echo $this -> partial('/path/to/sidebar.phtml',array('menuitems' => $data)); 

Et puis la barre latérale peut traiter que les données dynamiques:

//sidebar.phtml 
<div id="sidebar"> 

    <?php foreach($this -> menuitems as $item) : ?> 
    <a href="<?php echo $item['url']; ?>"><?php echo $item['title']; ?></a> 
    <?php endforeach; ?> 

</div> 

Si vous avez besoin des fonctionnalités supplémentaires, vous pouvez créer un dédié view helper à gérer.

-4

Nous aimerions quelques détails, à savoir quel type de contenu est indiqué dans les barres latérales, comment vous les montrer (en utilisant par exemple un <ul>, <div> ou autre chose), est le contenu récupéré à partir d'une base de données, etc.

en CodeIgniter qui utilise également le format Model, View, Controller, nous créons une vue appelée « sidebar.php » et dans la vue Header, nous incluons un appel à ce point de vue de la barre latérale, à savoir:

<html> 
<head>.......</head> 
<div id="header">....</div> 
<?php $this->load->view('sidebar');?> 

la vue de la barre latérale contient la logique pour afficher les éléments de menu. Habituellement, il est un menu statique, mais si elle était dynamique et a dû être extraite de la base de données, je referais ce:

<ul> 
    <?php 
    $items=$this->some_model->getMenuItems(); 
    foreach ($items as $item): 
    ?> 
    <li><a href="<?=$item['url'];?>"><?=$item['text'];?></li> 
    <?php endforeach;?> 
</ul> 
+3

Fournir une réponse basée sur CodeIgniter - ou suggérer que le demandeur utilise CodeIgniter - ne contribue pas vraiment à répondre à la question comme demandé. –

-2

Oui, les gens, mon pari est que la réponse des gens de Code Igniter est la bonne approche. En fait, il est utile de voir comment CI le fait simplement, et de faire des comparaisons. Il est fondamentalement le même dans ZF, sauf qu'au lieu de la "vue nommée" ZF a "Partials". ZF a simplement une discipline plus imposée, telle que des dispositions + vues + partiels, et plus de machinerie interne pour l'implémenter, qui la fait fonctionner moitié moins vite, alors que l'allumeur de code semble avoir simplement aplani tout cet appareil en "vues nommées".

(je n'ai pas encore pris ma décision quant à savoir si ZF a trop cuit ou si des steaks de CI doivent rester cru au milieu.)

Si vous utilisez $ Navigation-> setPartial (blah blah) puis le tableau de plomb (techniquement ce type de données constitue la partie "modèle" de la chose MVC) et est rendu disponible au partiel. Donc, là vous l'avez, l'idée semble être de ne pas tirer les aspects d'affichage du modèle dans le contrôleur, pousser les choses d'affichage de modèle sur les machines de traitement de vue.

Je suis sur le point d'essayer moi-même, j'ai fait une recherche sur les partiels dans la section helpers du manuel Zend pour trouver ceci, même si les exemples sont un peu fins.

me souhaite bonne chance Keith