Symfony y ExtJS
Hola, tengo un proyecto muy gande en symfony 1.4.9 con MySQL y quiero integrarlo
con ExtJS, ya he logrado hacer algunas cosas, gracias a esta pagina,
como listar datos en un Grid, pero mi primer problema es el siguiente:
1- Tengo dos tablas (persona - pais), con una relacion de uno a muchos,
cuando listo en el grid los datos de la tabla persona en vez de mostrarme
el pais al que pertenece una persona me muestra el ID del país al que pertenece,
no el nombre del país. Cómo pudiera arrglar esto? para que me mostrara el nombre del
pais y no el ID.
2- Como Guardo datos desde un formulario, ya que tambien quiero crear mis formularios
de Symfony en ExtJS..
saludos y de ante mano les doy las gracias por cualquier ayuda
que me puedan ofrecer..saludos..LUIS
Hola a todos, despues de unos cuantos días tratando de solucionar algo tan facíl pero que para muchos puede resultar un dolor de cabeza como para mi, he dado solución a mi propia interrogante, pues claro, con la ayuda de este gran foro y de Crysfel que me dió luz para nuevas ideas, pues se trata de como mostrar datos en un Grid creada en ExtJS integrado a Symfony desde mysql con dos tablas realcionadas. Por lo tanto quiero hacer este pequeño aporte, para que otros que lo neseciten lo tengan sin tener dolores de cabeza como los tube yo.
he tratado de subir los archivos pero no me deja, de todas maneras les pongo el código aquí mismo.....decirles que le agregue filtrados al grid......espero les sirva
-----actions.class.php------
class filtergridActions extends sfActions
{
/**
* Executes index action
*
* @param sfRequest $request A request object
*/
public function executeIndex(sfWebRequest $request)
{
}
// function que ejecuta la accion list
public function executeList(sfWebRequest $request) {
# data retrieved from the request
$limit = $request->getParameter('limit', 15);
$page = ($request->getParameter('start', 0)/$limit)+1;
$dir = $request->getParameter('dir', 'ASC');
$column = strtolower($request->getParameter('sort', 'nombre'));
# create query object
$query = Doctrine_Query::create()->from('TestPersona c')
->innerJoin('c.TestPais');
# conditions for sorting
if (Doctrine::getTable('TestPersona')->hasColumn($column)) {
$query->orderBy(sprintf('c.%s %s', Doctrine::getTable('TestPersona')->getFieldName($column), $dir));
}
# code resposible for filtering data
foreach($request->getParameter('filter') as $filter) {
# comparison condition
if (isset($filter['data']['comparison'])) {
switch($filter['data']['comparison']) {
case 'eq':
$comparison = '=';
break;
case 'lt':
$comparison = '';
break;
}
}
# switch 5 filter types
switch($filter['data']['type']) {
case 'boolean':
$query->addWhere(sprintf('c.%s = ?', $filter['field']), $filter['data']['value']);
break;
case 'string':
$query->addWhere(sprintf('c.%s LIKE ?', $filter['field']), '%'.$filter['data']['value'].'%');
break;
case 'numeric':
$query->addWhere(sprintf('c.%s %s ?', $filter['field'], $comparison), $filter['data']['value']);
break;
case 'list':
$query->whereIn(sprintf('c.%s', $filter['field']), explode(',', $filter['data']['value']));
break;
case 'date':
$query->addWhere(sprintf('c.%s %s ?', $filter['field'], $comparison), date('Y-m-d', strtotime($filter['data']['value'])));
break;
default:
break;
}
}
# object responsible for paging
$pager = new sfDoctrinePager('TestPersona', $limit);
$pager->setQuery($query);
$pager->setPage($page);
$pager->init();
$result = array();
# format result array
foreach($pager->getResults() as $country) {
$result[] = $country->toArray();
//$result['test_persona']['test_pais'] = $country->toArray();
//$result[] = $country->toArray();
//$result['test_pais']['nombre'];
// $result[] = $country->toArray();
//$pais_string[$country]['test_pais'];
}
# formatted data are returned to the grid
return $this->renderText(json_encode(array(
'success' => true,
'total' => $pager->getNbResults(),
'data' => $result
)));
}
-----indexSuccess.php------
}
¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook
Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.