Yii Framework Forum: Campo Obrigatório De Acordo Com A Visibilidade - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Campo Obrigatório De Acordo Com A Visibilidade Rate Topic: -----

#1 User is offline   Aline Barros 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 05-October 12

Posted 05 October 2012 - 09:26 AM

Bom dia a todos,

Estou iniciando no YII framework e tenho uma dúvida.
Como faço para que um campo de um formulário se torne obrigatório apenas se a visibilidade for igual a "true"?
Tenho dois radios onde o usuário seleciona se a solicitação é de "terceiro" ou não. Caso selecione "sim", é exibido o nome do "terceiro" e o "rg". Segue abaixo os códigos:


form.css
.
.
.
div.form .requisicao_terceiro
{
	margin: 5px 0;
	display: none;
       
}
.
.
.


_form.php
<div class="row">
            <?Php
                Yii::app()->clientScript->registerScript('bt'," 
                 $(document).ready(function() {
               
                 $('#Requisicao_requisicao_terceiro_0').click(function(){
                    $('.requisicao_terceiro').show();
                    })
               
                  $('#Requisicao_requisicao_terceiro_1').click(function(){
                     $('.requisicao_terceiro').hide();
                  })
                
                  })",CClientScript::POS_READY); 
                  ?>
     
        </div>

<div class="row">
            <div class="compactRadioGroup">
        	<?php 
                 echo $form->labelEx($model,'requisicao_terceiro'); 
                 echo $form->radioButtonList($model, 'requisicao_terceiro',
                        array(  1 => 'Sim',
                                0 => 'Não',
                              ),
                        array( 'separator' => "  " ) ); // choose your own separator text
                    
               ?>
               <?php echo $form->error($model,'requisicao_terceiro'); ?>
            </div>
	</div>

	<div class="requisicao_terceiro">
		<?php echo $form->labelEx($model,'nome_terceiro'); ?>
		<?php echo $form->textField($model,'nome_terceiro',array('size'=>60,'maxlength'=>75)); ?>
		<?php echo $form->error($model,'nome_terceiro'); ?>
	</div>

	<div class="requisicao_terceiro">
		<?php echo $form->labelEx($model,'rg_terceiro'); ?>
		<?php echo $form->textField($model,'rg_terceiro',array('size'=>15,'maxlength'=>15)); ?>
		<?php echo $form->error($model,'rg_terceiro'); ?>
	</div>

	<div class="requisicao_terceiro">
		<?php echo $form->labelEx($model,'rg_org_exp_terceiro'); ?>
		<?php echo $form->textField($model,'rg_org_exp_terceiro',array('size'=>5,'maxlength'=>5)); ?>
		<?php echo $form->error($model,'rg_org_exp_terceiro'); ?>
	</div>


0

#2 User is offline   andredelorme 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 48
  • Joined: 30-April 09

Posted 05 October 2012 - 10:40 AM

View PostAline Barros, on 05 October 2012 - 09:26 AM, said:

Bom dia a todos,

Estou iniciando no YII framework e tenho uma dúvida.
Como faço para que um campo de um formulário se torne obrigatório apenas se a visibilidade for igual a "true"?
Tenho dois radios onde o usuário seleciona se a solicitação é de "terceiro" ou não. Caso selecione "sim", é exibido o nome do "terceiro" e o "rg". Segue abaixo os códigos:


form.css
.
.
.
div.form .requisicao_terceiro
{
	margin: 5px 0;
	display: none;
       
}
.
.
.


_form.php
<div class="row">
            <?Php
                Yii::app()->clientScript->registerScript('bt'," 
                 $(document).ready(function() {
               
                 $('#Requisicao_requisicao_terceiro_0').click(function(){
                    $('.requisicao_terceiro').show();
                    })
               
                  $('#Requisicao_requisicao_terceiro_1').click(function(){
                     $('.requisicao_terceiro').hide();
                  })
                
                  })",CClientScript::POS_READY); 
                  ?>
     
        </div>

<div class="row">
            <div class="compactRadioGroup">
        	<?php 
                 echo $form->labelEx($model,'requisicao_terceiro'); 
                 echo $form->radioButtonList($model, 'requisicao_terceiro',
                        array(  1 => 'Sim',
                                0 => 'Não',
                              ),
                        array( 'separator' => "  " ) ); // choose your own separator text
                    
               ?>
               <?php echo $form->error($model,'requisicao_terceiro'); ?>
            </div>
	</div>

	<div class="requisicao_terceiro">
		<?php echo $form->labelEx($model,'nome_terceiro'); ?>
		<?php echo $form->textField($model,'nome_terceiro',array('size'=>60,'maxlength'=>75)); ?>
		<?php echo $form->error($model,'nome_terceiro'); ?>
	</div>

	<div class="requisicao_terceiro">
		<?php echo $form->labelEx($model,'rg_terceiro'); ?>
		<?php echo $form->textField($model,'rg_terceiro',array('size'=>15,'maxlength'=>15)); ?>
		<?php echo $form->error($model,'rg_terceiro'); ?>
	</div>

	<div class="requisicao_terceiro">
		<?php echo $form->labelEx($model,'rg_org_exp_terceiro'); ?>
		<?php echo $form->textField($model,'rg_org_exp_terceiro',array('size'=>5,'maxlength'=>5)); ?>
		<?php echo $form->error($model,'rg_org_exp_terceiro'); ?>
	</div>





Aline,

O que se pode fazer é a verificação de acordo com o valor selecionado.
No seu módulo você cria uma regra de validação como:

...
array('nome_terceiro, rg_terceiro, rg_org_exp_terceiro', 'requiredTerceiro'),
...


E um novo método:

    public function requiredTerceiro($attribute, $params) {
        if ($this->requisicao_terceiro == 1 && trim($this->$attribute) == '') {
            $this->addError($attribute, $this->getAttributeLabel($attribute) . ' não pode ser vazio.');
        }
    }


Veja se resolve.
0

#3 User is offline   Aline Barros 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 05-October 12

Posted 08 October 2012 - 08:55 AM

View Postandredelorme, on 05 October 2012 - 10:40 AM, said:

Aline,

O que se pode fazer é a verificação de acordo com o valor selecionado.
No seu módulo você cria uma regra de validação como:

...
array('nome_terceiro, rg_terceiro, rg_org_exp_terceiro', 'requiredTerceiro'),
...


E um novo método:

    public function requiredTerceiro($attribute, $params) {
        if ($this->requisicao_terceiro == 1 && trim($this->$attribute) == '') {
            $this->addError($attribute, $this->getAttributeLabel($attribute) . ' não pode ser vazio.');
        }
    }


Veja se resolve.



Bom dia, Andredelorme!

Obrigada pela ajuda, mas funcionou em partes, o único problema que ocorre é que se não preencher os campos do "terceiro" e clicar "salvar":

O formulário é recarregado com a validação correta, porém os campos aparecem ocultos devido a regra do css.0


div.form .requisicao_terceiro
{
	margin: 5px 0;
	display: none;
       
}



Existe algum método afterReload ou alguma forma de colocar uma verificação para só ocultar os campos se for a primeira vez que o formulário é exibido e clicado no radio na opção "não"?
0

#4 User is offline   Dyego Nery 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 104
  • Joined: 26-August 11

Posted 08 October 2012 - 09:38 AM

Nas regras do model, vc tem que definir o campo como "required" em um determinado scenario.
Porém, pra fazer isso, vc vai precisar criar um ajax pra recarregar o campo quando vc selecionar o radio.

Pra definir como required em apenas um scenario, faça da seguinte forma:
Dentro do array rules, que fica dentro do model, vc coloca isso:

    array('campo','required','on'=>'nomescenario'),


Você então precisará criar a instância do model em questão, com esse scenario. Dá uma olhada nessa wiki que pode te ajudar:

http://www.yiiframew...nding-scenarios
http://www.emuitocarro.com.br - Classificado Online de Veículos


http://www.yiibrasil.com.br - Blog com dicas e tutoriais sobre o Yii Framework.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users