2013-02-13 2 views
1

Можно ли разрешить cakePHP управлять полем ввода?cakePHP - форма - если установлен флажок показывать и проверять другое поле

echo $this->Form->checkbox('foo'); 
echo $this->Form->input('bar'); //is hidden initially 

И только показывать и проверять бары, если проверено foo?

+0

нормально, поэтому я не могу определить в модели? – Philip

+0

Нет, не в режиме реального времени. Вам просто нужно 3 строки jQuery. не такая большая сделка. – mark

+0

Хорошо, jquery Я знаю, как обращаться! – Philip

ответ

0

yes it it it, но для этого вам нужно использовать программирование на стороне клиента, так как php не может делать такое шоу hide..j Query является лучшим ... в cakephp уже есть функция проверки такой зависимости, и если i Я не ошибаюсь, это называется observField, поскольку по умолчанию используется прототип jes cakephp.

for more

+0

Не наблюдаетфилд старый? Разве я не должен использовать jsHelper? – Philip

+0

вы можете, я просто дал намек на то, что вы можете сделать. Я также сказал вам использовать jquery, чтобы тоже работать. –

3

Необходимый JQuery (вам нужно будет обновить классы для вашего кода, как вы на самом деле не поставить настоящие имена). Сначала вам нужно скрыть панель с помощью CSS.

(function(){ 

    $('#foo').on('change', function() { 
     if($(this).is(':checked')) { 
      $('#bar').fadeIn(); 
     } 
    }); 
}); 
1

Лучший способ сделать это является использование JavaScript, помните, что CakePHP просто генерировать PHP-код для боковой сервера

<script > 
$(document).ready(function(){ 
$('#MyModelFoo').change(function(){ 
if($(this).is(':checked')) { 
     $('#MyModelBar').fadeIn(); 
    } 
}); 
</script> 
<?php 
echo $this->Form->create('MyModel'); 
echo $this->Form->checkbox('foo'); 
echo $this->Form->input('bar'); //is hidden initially 
echo $this->Form->end(); 
?> 
0

Использование JavaScript. Динамически нельзя скрывать/показывать поля ввода с помощью языка программирования на стороне сервера, с которым написан CakePHP.

0

Другие отправил JQuery необходимо, чтобы показать/скрыть поле, вот как проверить его в CakePHP:

В AppModel:

public function requiredIfChecked($check, $associatedField) { 

    $value = array_pop($check); 

    if ($this->data[$this->alias][$associatedField] && empty($value)) { 

     return false; 

    } 
    else { 

     return true; 

    } 

} 

В массиве проверки:

public $validate = array( 
    'bar'=>array(
     'required_if_checked'=>array(
      'rule'=>array('requiredIfChecked', 'foo'), 
      'message'=>'cannot be blank if foo is checked' 
     ) 
    ) 
); 

 Смежные вопросы

  • Нет связанных вопросов^_^