2010-03-30 11 views
7

Actualmente estoy descubriendo que tengo que seguir duplicando parciales para diferentes módulos.Modular Zend Framework con una base de parciales

Me gustaría tener un directorio de casos para acceder a todos los parciales.

¿Alguien tiene una buena forma de hacerlo?

Gracias

Respuesta

8
$this->partial('directoryOfPartials/partial.phtml', $model); 

creo que también se puede usar $ this-> parcial con tres argumentos. El segundo argumento es un nombre de módulo y el tercer argumento se convierte en el modelo.

Tomado de: http://framework.zend.com/manual/en/zend.view.helpers.html

Example #10 Rendering Partials in Other Modules Sometime a partial will exist in a different module. If you know the name of the module, you can pass it as the second argument to either partial() or partialLoop(), moving the $model argument to third position. For instance, if there's a pager partial you wish to use that's in the 'list' module, you could grab it as follows:

<?php echo $this->partial('pager.phtml', 'list', $pagerData) ?> 

In this way, you can re-use partials created specifically for other modules. That said, it's likely a better practice to put re-usable partials in shared view script paths.

EDIT - Acceso vista parciales desde dentro del ámbito de acción de un controlador

$this->view->getHelper('partial')->partial('comments.phtml'); 
+0

Gracias, esto es muy bueno para la vista, sin embargo tengo una consulta acerca de su uso a través del controlador, responderá en una nueva publicar a continuación para que sea más claro – azz0r

+0

¿qué hacer a la vista cuando configura parcial en helper? Quiero decir después de eso, ¿qué publicaste después de tu edición? Establece un valor parcial para comments.phtml, pero ¿qué hacer con eso a la vista? TIA – prostynick

2

excelente gracias :)

Sin embargo, ¿cómo puedo hacer esto a través ¿el controlador? Tengo FancyBox y han establecido el diseño ajax:

$this->view->layout()->setLayout('ajax'); 

$errors = array('You have lost your rights to download this clip, you have downloaded it the maximum amount of times.'); 

$this->render($this->view->partial('partials/errors.phtml', 'default', array('errors' => $errors)), NULL, true); 

La ventana emergente como se requiere, pero con el siguiente error:

Problem: Method "partial" does not exist and was not trapped in __call() 

yo un poco de asumió el $ this-> Ver-> parcial sería lo mismo que usar $ this-> partial dentro de la plantilla de visualización, pero supongo que no. Ideas?

VIA resuelto:

Bootstrap initView, agregó:

$view->addScriptPath('../application/layouts/partials'); 

se ha llevado mi parciales a ese directorio. Luego, en mi regulador que hago:

$this->view->layout()->setLayout('ajax'); 
$this->view->form = $form; 
$this->renderScript('login.phtml'); 

gracias salen a #zftalks SmartSsa

+1

$ this-> view-> getHelper ('partial') -> partial ('comments.phtml'); También lo agregué a mi respuesta. – Ballsacian1

Cuestiones relacionadas