2016-04-28 5 views
0

Ich bin in einem Problem von Kuchen php stecken. Ich wollte die Validierungsregel innerhalb des Modells für zwei Felder nur hinzufügen, wenn sie am Frontend angezeigt werden. Im Grunde sind sie versteckt. Beim Wechsel einer Auswahlbox werden sie angezeigt und ich möchte, dass sie benötigt werden, wenn sie sichtbar sind. lassen Sie mich Ihnen meinen CodeDynamisch hinzufügen Validierungsregel in CakePHP 2. *

<?php 
    echo $this->JqueryValidation->input('website',array(
      'type' => 'text', 
      'label' => 'Website', 
      'div' => true, 
      'class' => 'form-control', 
      'id' => 'InputWebsite', 
      'placeholder' => 'Enter your website' 
     )); 
?> 
<?php 
    echo $this->JqueryValidation->input('phone',array(
      'type' => 'text', 
      'label' => 'Phone', 
      'div' => true, 
      'class' => 'form-control', 
      'id' => 'InputPhone', 
      'placeholder' => 'Enter your contact Number' 
     )); 
?> 

<script> 
 
    $(document).ready(function() { 
 
    $('#InputPhone').parent('div').hide(); 
 
    $('#InputWebsite').parent('div').hide(); 
 

 

 
    $('#purpose').on('change', function(e) { 
 
     var optionVal = $(this).val(); 
 
     if (optionVal == 'Schedule a call') { 
 
     $('#InputPhone').parent('div').show(); 
 
     $('#InputWebsite').parent('div').show(); 
 
     $("#InputMessage").hide(); 
 
     $("#InputMessage").val(''); 
 
     $(".textarea").hide(); 
 
     } else { 
 
     $('#InputPhone').parent('div').hide(); 
 
     $('#InputPhone').val(''); 
 
     $('#InputWebsite').parent('div').hide(); 
 
     $('#InputWebsite').val(''); 
 
     $("#InputMessage").show(); 
 
     $(".textarea").show(); 
 
     } 
 
    }); 
 
    }); 
 
</script>

Ist es möglich, zu tun?

Antwort

0

In beforeValidate Funktion in Model, überprüfen, dass der Select-Box-Wert derjenige ist, der für die Validierung des anderen Feldes sein muss. Wenn dies der Fall war, müssen Sie die Validierungsregel zu Ihrem $validate Array hinzufügen (unter Verwendung von $this->validate += array(...new rule...);).

Verwandte Themen