studio programacion móviles libro desarrollo curso aplicaciones php tabs symfony-1.4

php - móviles - manual de programacion android pdf



Vistas de módulos y acciones dentro de pestañas (1)

Estoy desarrollando un sitio usando Symfony 1.4.20 pero el diseñador quiere cosas como esta imagen

Cada uno de estos es un módulo de administración que genera una doctrine:generate-admin tareas doctrine:generate-admin .

¿Cómo logro esta tarea? Quiero decir, ¿funciona con cada una de una interfaz hecha por pestañas?

EDITAR

En base a las sugerencias de @antony, hago esto: /frontend/modules/emisores/actions/components.class.php un components.class.php dentro de /frontend/modules/emisores/actions/components.class.php , agrega este código dentro de la clase:

class emisoresComponents extends sfComponents { public function executeIndex(sfWebRequest $request) { $this->sdriving_emisors = Doctrine_Core::getTable(''SdrivingEmisor'')->createQuery(''a'')->execute(); } }

Incluir el componente en la vista donde se crean pestañas

<?php include_component(''emisores''); ?>

Pero obtengo este error

La inicialización de sfComponents falló.

¿Qué pasa?

EDIT2 Estoy teniendo algunos problemas con la paginación porque me redireccionaron al módulo en lugar de obtener la paginación dentro de la pestaña. Cambio el componente a esto:

public function executeIndex(sfWebRequest $request) { $this->pager = new sfDoctrinePager(''SdrivingEmisor'', 10); $this->pager->setQuery(Doctrine_Core::getTable(''SdrivingEmisor'')->createQuery(''a'')); $this->pager->setPage($request->getParameter(''page'', 1)); $this->pager->init(); }

Luego en la vista (_index.php) escribí esto:

<?php if (count($pager) > 0): ?> <table class="table table-condensed table-striped table-bordered table-hover marginBottom"> <thead> <tr> <th><?php echo __(''Número'') ?></th> <th>&nbsp;</th> </tr> </thead> <tbody> <?php foreach ($pager->getResults() as $sdriving_emisor): ?> <tr> <td><?php echo $sdriving_emisor->getNumero() ?></td> <td> <a href="<?php echo url_for(''emisores/edit?idemisor='' . $sdriving_emisor->getIdemisor() . ''&idempresa='' . $sdriving_emisor->getIdempresa()) ?>" class="btn btn-success btn-mini">Editar</a> <a href="<?php echo url_for(''emisores/delete?idemisor='' . $sdriving_emisor->getIdemisor() . ''&idempresa='' . $sdriving_emisor->getIdempresa()) ?>" class="btn btn-danger btn-mini">Eliminar</a> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php else: ?> <div class="alert alert-block"> <h4><?php echo __(''Información!'') ?></h4> <?php echo __(''No se ha creado ningún emisor aún. Haga clic en el botón "Crear Nuevo" para crear uno.'') ?> </div> <?php endif; ?> <div class="pagination"> <strong><?php echo count($pager) ?></strong> <?php echo __(''emisores encontrados'') ?> <?php if ($pager->haveToPaginate()): ?> <div class="clearfix"></div> <ul> <li><?php echo link_to(__(''Anterior''), ''emisores/index?page='' . $pager->getPreviousPage()) ?></li> <?php $links = $pager->getLinks(); ?> <?php foreach ($links as $page): ?> <li> <?php echo ($page == $pager->getPage()) ? $page : link_to($page, ''emisores/index?page='' . $page); ?> <?php if ($page != $pager->getCurrentMaxLink()): ?> <?php endif ?> </li> <?php endforeach; ?> <li><?php echo link_to(__(''Siguiente''), ''emisores/index?page='' . $pager->getNextPage()) ?></li> </ul> <?php endif; ?> </div>

Pero como dije, me redireccionaron al módulo emisor lugar de a la emisor dentro de la pestaña activa, ¿algún consejo?


El hecho de que estés usando pestañas no debería cambiar mucho. Aún crearía un módulo separado que maneje las tareas de CRUD para cada pestaña. Puede que necesite usar parciales e incrustarlos en la plantilla de su módulo de usario. Entonces, por ejemplo, podría almacenar cada pestaña en un _form.php parcial, y su estructura podría ser algo como esto:

/app /admin /modules /usario /actions /templates editSuccess.php _form.php /emisore /actions /templates _form.php /maquina /actions /templates _form.php

Puede incluir cada forma parcial en su plantilla editSuccess.php usuario de diferentes maneras. Puede crear los formularios en la acción de edición del usuario o usar componentes.

// app/admin/modules/usario/actions/actions.class.php public function executeEdit(sfWebRequest $request) { $usario = // Code to usario; $this->usario = new UsarioForm($usario); $emisore = // Code to get emisore; $this->emisore = new EmisoreForm($emisore); //... } public function executeUpdate(sfWebRequest $request) { // ... Do update here // Keep track of the tab being edited $this->getUser()->setFlash(''activeTab'', ''usario''); }

O crea una clase de componente para cada uno de los otros módulos

// app/admin/modules/maquina/actions/components.class.php public function executeNew(sfWebRequest $request) { $maquina = // Code to get Maquina; $this->form = new MaquinaForm($maquina); }

Incríbelas así en su plantilla. También haga un seguimiento de la pestaña que acaba de editarse en su objeto flash de sesión

<!-- app/admin/modules/usario/templates/editSuccess.php --> <div class="tab-content<?php echo $sf_user->getFlash(''activeTab'') == ''usario'' ? '' active'' : '''' ?>"> <?php include_partial(''usario/form'', array(''form'' => $usarioForm))); ?> </div> <div class="tab-content<?php echo $sf_user->getFlash(''activeTab'') == ''emisore'' ? '' active'' : '''' ?>"> <?php include_partial(''emisore/form'', array(''form'' => $emisoreForm))); ?> </div> <div class="tab-content<?php echo $sf_user->getFlash(''activeTab'') == ''maquina'' ? '' active'' : '''' ?>"> <?php include_component(''maquina'', ''form''); ?> </div>