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