O Guia Definitivo do Yii 1.1
O Guia Definitivo do Yii 1.1
O Guia Definitivo do Yii 1.1
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 />
)