Trazer dados do banco de dados para textfield

Olá, estou querendo trazer para uma textfiel dados do banco de dados. Ex: Campo nome quando eu clicar na caixa, listar dados e auto completar de acordo com os dados do banco.

Opa, manolo!

Acesse esse link: http://www.yiiframework.com/doc/api/1.1/CJuiAutoComplete/

Um exemplo:

No controlador: (não esquece de add no array de accessRules a ação)




public function actionGetCampoTabela() {

        //personalize o filtro da sua maneira

	$criteria = new CDbCriteria;

        $criteria->select = 'campo';

	$criteria->condition = 'campo like :s';

	$criteria->params = array(':s' => '%' . $_GET['term'] . '%');

	$criteria->limit = 5;


	$models = Modelo::model()->findAll($criteria);

        $array = array();

	if ($models) {

		foreach ($models as $model) {

			$array[] = array(

				'label' => $model->campo,

				'value' => $model->campo,

			);

		}

	}

	// Saída em JSON

	echo CJSON::encode($array);

}



No formulário:


<div class="row">

	<?php echo $form->labelEx($model,'campo'); ?>

	<?php 

		$this->widget('zii.widgets.jui.CJuiAutoComplete', array(

			'model'=>$model,

			'attribute'=>'campo',

			'name'=>'Modelo[campo]',

			'sourceUrl'=> $this->createUrl('controlador/getCampoTabela'),

			// additional javascript options for the autocomplete plugin

			'options'=>array(

				'minLength'=>'1',

			),

			'htmlOptions'=>array('size'=>16,'maxlength'=>64),

		));

	?>

	<?php echo $form->error($model,'campo'); ?>	

</div>

Flw!

Vlw, Thiago Luis deu certinho.

Olá,

É possivel eu fazer um consulta no banco sem um modelo com o CDbCriteria ?

Eu tenho as condições, tenho a tabela no banco de dados, porém eu não quero que essa tabela tenha um modelo na minha apliação.

Obrigada,

Giovanna

Olá Giovanna!

Acredito que não, pelo menos o que está indicando na documentação do CDbCriteria é q ele trabalha diretamente com o ActiveRecord. Porém não estou fechando as portas para sua ideia, pois minha análise foi rápida, veja com outras pessoas sobre isso.

E caso não encontre uma solução, veja se vale a pena utilizar a classe CDbCriteria, e crie o modelo. Se não valer a pena, faça as operações sem modelo com CDbConnection.

Até mais.

Giovanna,

Você pode executar query SQL sem ter qualquer Model criado, usando o CDbConnection, mais para isso você precisar configurar a conexão do banco de dados no config/main.php, e depois executar os seguintes comandos:


$connection=Yii::app()->db;

$sqlStatement='SELECT * FROM clientes';

$command=$connection->createCommand($sqlStatement);

$command->execute();   // a non-query SQL statement execution

// or execute an SQL query and fetch the result set

$reader=$command->query();

// each $row is an array representing a row of data

foreach($reader as $row) ...



Referências:

http://www.yiiframework.com/doc/api/1.1/CDbConnection

http://www.yiiframework.com/doc/guide/1.1/en/database.dao

Rodrigo, não fiz os testes aqui, mas estava dando uma lida e vendo aqui as classes e talvez seja possível, fazendo algo do tipo…


$connection = Yii::app()->getDb();


$criteria = new CDbCriteria();


$command = new CDbCommandBuilder();

$command->createCriteria($criteria);


$connection->createCommand($command);

CDbCommandBuilder