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.
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:
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