20.11.2014 Views

O Guia Definitivo do Yii 1.1

O Guia Definitivo do Yii 1.1

O Guia Definitivo do Yii 1.1

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Nesse trecho de código, temos uma atribuição em massa que atribui cada entrada em<br />

$_POST['LoginForm'] ao atributo correspondente no modelo, no cenário login. Isso é<br />

equivalente a:<br />

foreach($_POST['LoginForm'] as $name=>$value)<br />

{<br />

if($name é um atributo seguro)<br />

$model->$name=$value;<br />

}<br />

A tarefa de decidir se um da<strong>do</strong> é seguro ou não é baseada no valor de retorno <strong>do</strong> méto<strong>do</strong><br />

safeAttributes e o cenário especifica<strong>do</strong>. Por padrão, esse méto<strong>do</strong> retorna todas as<br />

variáveis membro públicas como atributos seguros para a classe CFormModel, ou todas<br />

as colunas de uma tabela, menos a chave primária, como atributos para a classe<br />

CActiveRecord. Nós podemos sobrescrever este méto<strong>do</strong> para limitar esses atributos<br />

seguros de acor<strong>do</strong> com os cenários. Por exemplo, um modelo usuário deve conter vários<br />

atributos, mas no cenário login, precisamos apenas <strong>do</strong> username e <strong>do</strong> password.<br />

Podemos especificar esses limites da seguinte maneira:<br />

public function safeAttributes()<br />

{<br />

return array(<br />

parent::safeAttributes(),<br />

'login' => 'username, password',<br />

);<br />

}<br />

Mais precisamente, o valor de retorno <strong>do</strong> méto<strong>do</strong> safeAttributes deve ter a seguinte<br />

estrutura:<br />

array(<br />

// esses atributos podem ser atribuí<strong>do</strong>s em massa em qualquer cenário<br />

// isso não ser explicitamente especifica<strong>do</strong>, como vemos abaixo<br />

'attr1, attr2, ...',<br />

*<br />

// esses atributos só podem ser atribuí<strong>do</strong>s em massa no cenário 1<br />

'cenario1' => 'attr2, attr3, ...',<br />

*<br />

// esses atributos só podem ser atribuí<strong>do</strong>s em massa no cenário 2<br />

'cenario2' => 'attr1, attr3, ...',<br />

)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!