domingo, 16 de setembro de 2012

Yii - Argumentos Controle/View

Para passar um ou mais argumentos de um método de uma classe de controle para um arquivo de visão no framework Yii é bastante simples. No exemplo a seguir a variável $hello armazena uma string que é  enviada ao arquivo de visão index utilizando um array. Neste array a variável $hello é atribuída ao indice 'message' que é acessado no arquivo index como uma variável $message.



// Método da classe de controle
public function actionIndex() {
  $hello = "Ola mundo"; 
  $this->render('index',array('menssage'=>$hello,));       
}


// arquivo index.php
echo($message);

quinta-feira, 6 de setembro de 2012

Yii - consultas SQL

O framework Yii não realiza a geração automática do código CRUD para tabelas com chave primária composta (Yii 1.1.12). Esse tipo de tabela é utilizada para modelar o relacionamento N para N entre duas tabelas. Portanto, o desenvolvedor precisa codificar as operações necessárias usando SQL e isso pode ser feito empregando a estrutura disponibilizada pelo framework. O exemplo a seguir demonstra como isso é simples, após a execução deste comando a variável $user  vai conter os valores presentes na tabela tbl_user.

$user = Yii::app()->db->createCommand()                          
        ->where('user_id=:id',array(':id'=>1))  
        ->select('*')                                               
        ->from('tbl_user')                                       
        ->queryRow();
                                         

quarta-feira, 5 de setembro de 2012

Yii - campos obrigatórios

Para definir que os campos de um determinado formulário devem obrigatoriamente ser preenchidos, basta adicionar esta restrição no método rules() da classe de modelo. A classe de modelo foi gerada automaticamente pelo framework e está por default no seguinte diretório:

minhaAppUsandoYii/protected/models/minhaClasse.php

Como as classes de modelo são geradas a partir do esquema do banco de dados, as restrições definidas nas tabelas são propagadas para as classes de modelo, por exemplo: tamanho máximo de strings, as restrições de tipo (numérico, booleano), entre outras.  
No exemplo abaixo, o tamanho máximo da string name é de 128 caracteres e isso foi definido a partir do tamanho especificado no banco de dados. Para determinar que o campo name deve ser preenchido basta adicionar o valor required, conforme destacado no exemplo. Se mais campos são obrigatório basta acrescentar no array da seguinte forma: 
       
         array('name, outrocampo', 'required').

/**
* @return array validation rules for model attributes.
*/
public function rules()
{
  return array(

    array('name', 'length', 'max'=>128),

    array('name', 'required'),
  );
}