Yii Framework Forum: Necesito Ayuda Para Empezar Un Proyecto - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Necesito Ayuda Para Empezar Un Proyecto Procedimiento simple de búsqueda Rate Topic: -----

#1 User is offline   michelinho80 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 21
  • Joined: 07-November 12
  • Location:Tenerife, Islas Canarias, España

Posted 28 November 2012 - 03:33 PM

Hola a todos,

Soy nuevo en Yii Framework y estoy empezando mi primera página con este sistema.

Estoy realmente estancado con una cosa que debería ser realmente simple. Necesito algún código de ayuda.

Lo que quiero hacer es lo siguiente:

Tengo un formulario en la página principal, que incluye dos dropDownLists. Uno muestra ciudades y el otro actividades.

Quiero mostrar, en una página distinta, en un CGridView, "empresas" que ofrezcan la "actividad" en la "ciudad" seleccionada.

En mi base de datos tengo estas tres tablas:

Activities
----------
ActivityId
ActivityName


Companies
---------
CompanyId
CompanyName
City


Schedule
--------
ScheduleId
CompanyId
ActivityId
Hour
Day

Este es mi formulario, creo que todo está bien por aquí:

$form=$this->beginWidget('CActiveForm', array(
        'id'=>'search-form',
        'action'=>Yii::app()->baseUrl.'/activities/search',
        'method'=>'post',
        'enableAjaxValidation'=>true,
        'enableClientValidation'=>false));
?>
<div id="search">
        <label for="Activities_Activity" class="required">Choose Activity</label>
        <?php echo $form->dropDownList(Activities::model(), 'ActivityId', CHtml::listData(Activities::model()->findAll(), 'ActivityId', 'Activity'), array('options'=>array('42'=>array('selected'=>true)),'name'=>'activity')); ?>


        <label for="Cities_City" class="required">Choose City</label>
        <?php echo $form->dropDownList(Cities::model(), 'CityId', CHtml::listData(Cities::model()->findAll(), 'CityId', 'City'), array('options'=>array('24'=>array('selected'=>true)),'name'=>'City')); ?>     


        <?php
        $this->widget('bootstrap.widgets.TbButton', array('buttonType'=>'submit','type'=>'info','label'=>'Find','loadingText'=>'Searching...','htmlOptions'=>array('id'=>'buttonStateful','style'=>'margin-left:132px')));?>
</div>
<?php
$this->endWidget();
?>


No tengo ni idea de qué poner en el Controller de actividades (¿o debería ponerlo en el de empresas?):

public function actionSearch()
     // :-(
{


Tampoco sé como definir las relations entre las tablas en mi modelo.

Y esto es lo que quiero rellenar en mi página de resultados:

    <?php 
    $this->widget('zii.widgets.grid.CGridView', array(
        'id'=>'results-grid',
        'dataProvider'=>$model->search(),
        'columns'=>array(
            array(
                'name'=>'CompanyName',
                'header'=>'CompanyName',
                'type'=>'raw',
                'value'=>$data->CompanyName
            ),
            array(
                'name'=>'Day',
                'header'=>'Day',
                'type'=>'raw',
                'value'=>$data->Day
            ),
            array(
                'name'=>'Hour',
                'header'=>'Hour',
                'type'=>'raw',
                'value'=>$data->Hour
            ),
        ),
    ));  
    ?>


Alguien me puede ayudar? Estoy realmente estancado y sé que debe ser sencillísimo para alguien con experiencia.

Gracias por adelantado!
0

#2 User is offline   robregonm 

  • Experienced Yii Developer
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 651
  • Joined: 30-July 09
  • Location:Colombia

Posted 29 November 2012 - 09:52 AM

Creo que el estancamiento se ha debido a querer hacer todo a "mano", algo que no es negativo pero sí consume bastante tiempo...
Le recomiendo echar un vistazo al generador de código de Yii: Se llama Gii, que normalmente se cargaría algo así: http://localhost/miP...index.php?r=gii
Todas las relaciones que haya en la base de datos físicamente se replicarán en los modelos automáticamente al generar los modelos des de Gii.

De ahí en adelante será mucho más sencillo, ya que estoy seguro que lo desbloqueará :)

Saludos.
Rick

Support me on Patreon: https://www.patreon.com/yiiframework


Promover Yii Framework en Español en Patreon: https://www.patreon....yiiframework_es

YiiFramework en Español: http://yiiframework.es/ - Canal de YouTube - Facebook
Follow me: @robregonm.
1

#3 User is offline   robregonm 

  • Experienced Yii Developer
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 651
  • Joined: 30-July 09
  • Location:Colombia

Posted 29 November 2012 - 09:56 AM

Después de que haya experimentado un poco con Gii (aunque si quiere hacer directamente también se vale), le recomiendo que dé el paso a un generador más "poderoso"... Le recomiendo AweCrud, que es una extensión de Gii (creada por mí ;) ) con varios "plus" que aceleran muchísimo el trabajo. Con soporte para Bootstrap, relaciones a llaves foráneas en formularios de inserción y actualización, entre muchísimos otros ;)

Saludos.
Rick

Support me on Patreon: https://www.patreon.com/yiiframework


Promover Yii Framework en Español en Patreon: https://www.patreon....yiiframework_es

YiiFramework en Español: http://yiiframework.es/ - Canal de YouTube - Facebook
Follow me: @robregonm.
1

#4 User is offline   hula_fran 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 23-August 12

Posted 29 November 2012 - 01:17 PM

Hola!
Lo primero que tienes que hacer es definir las relaciones en tu model Schedule. Que seria algo asi:
public function relations()
	{
		return array(
			'companyId' => array(self::BELONGS_TO, 'Schedule', 'CompanyId'),
			'activityId' => array(self::BELONGS_TO, 'Schedule', 'ActivityId'),              
		);
	}


Y en tu schedule/admin.php seria algo asi:

$this->widget('zii.widgets.grid.CGridView', array(
        'id'=>'results-grid',
        'dataProvider'=>$model->search(),
        'columns'=>array(
            array(
                'name'=>'CompanyId',
                'value'=>'$data->companyId->CompanyName',
            ),
            array(
                'name'=>'ActivityId',
                'value'=>'$data->activityId->ActivityName',
            ),
            array(
                'name'=>'Day',
                'header'=>'Day',
                'type'=>'raw',
                'value'=>$data->Day
            ),
            array(
                'name'=>'Hour',
                'header'=>'Hour',
                'type'=>'raw',
                'value'=>$data->Hour
            ),
        ),
    ));  


Espero que esto te ayude.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users