Dropdownlist con una sql predeterminada

Buenos Dias a Todos Dios los bendiga…

Tengo una aplicacion ya bastante adelantada donde dispongo de como 15 tipos de reportes y mas de 30 formularios.

Y quisiera optimizar mas mi codigo y hacer una especie de sub-consulta en el model tipo la del search() que me llene mi dropdownlist con una consulta fija como dije en el model para que cada vez que cree un formulario solo haga el llamado y se me arme el dropdownlist, por ejemplo:

siempre que creo un formulario debo hacer esto:

$form->dropDownListRow($model, ‘cobrador’, CHtml::listData(Cobradores::model()->findAll(array(‘condition’=>‘cobrador <> “AJUSTE” OR cobrador <> “CARGO” OR cobrador <> “ANULADO” “ACTIVO”’,‘order’ => ‘estado ASC, cobrador ASC’)), ‘cobrador’, ‘cobrador’), array(‘class’ => ‘span2’, ‘empty’ => ‘–Cobradores–’));

y quisiera que todo esa consulta se me simplifique en algun lado ya sea el model o el controller y solo tenga que hacer esto:

$form->dropDownListRow($model, ‘cobrador’, CHtml::listData(Cobradores::model()->busqueda()));

sera que me pueden ayudar

Hola, buenos días.

Si no entiendo mal, sería en el modelo Cobradores crear el método busqueda() con esa consulta, no?

Otra opción es crear una vista auxiliar para el form completo y mostrarlo con renderPartial(), o hacer ambas cosas.

Si bueno al final me las ingenie como pude e hice esto:

1* Cree un Controller Nuevo:




<?php


class BasesController extends Controller {


    /**

     * @var string the default layout for the views. Defaults to '//layouts/column2', meaning

     * using two-column layout. See 'protected/views/layouts/column2.php'.

     */

    public $layout = '//layouts/column2';


   /**

     * @return array action filters

     */

    public function filters() {

        return array(array('CrugeAccessControlFilter'));

    }


    /**

     * Specifies the access control rules.

     * This method is used by the 'accessControl' filter.

     * @return array access control rules

     */

    public function accessRules() {


        return array(

            array('allow', // pasar

                'actions' => array(),

                'users'=>array(),

            ),

            array('deny', // deny all users

                'users' => array('*'),

            ),

        );

    }

    

    #consultar Cuenta

    public function ActionCobradores_Form($form,$model) {

        

     $this->render('cobradores_form', array(

            'model' => $model,

            'form' => $form,

        ));

}


}






2* Cree una View con el dropdownlist




<?php

echo $form->dropDownListRow($model, 'cobrador', 

        CHtml::listData(Cobradores::model()->findAll(

        array('condition'=>'cobrador <> "AJUSTE" AND cobrador <> "CARGO" AND cobrador <> "ANULADO"',

              'order' => 'estado ASC, cobrador ASC'))

        , 'cobrador', 'cobrador'), array('class' => 'span2', 'empty' => '--Cobradores--'));

?>



3* Llame el dropdownlist con un render partial




<?php $this->renderPartial('/bases/cobradores_form', array('form'=>$form,'model'=>$model)); ?>



Conclusion:

Cada vez que cree un formulario donde necesite los cobradores solo llamo esa seccion con el renderPartial, entocnes cada vez que modifique la consulta solo tendre q modificar la view nada mas y asi se modificara en todo mi app

jeje gracias por la idea fher