2015-04-17 3 views

ответ

3

Нет, Существует никакого способа в ZF2 для этого, Вы можете использовать JQuery в JavaScript, чтобы добавить валидацию для этого:

Как это:

$('radio').click(function(){ 
    if($(this).val() == 'other') { 
    $('textfield').prop('required',true); 
    } 
}); 

Onclick на любом переключателе события на стороне клиента и zf2 выполняется на стороне сервера. Поэтому вы не можете этого сделать, пока не отправляете данные на сервер.

+0

Спасибо, попробуем это! – Hees1989

1

Для этого вы можете использовать jQuery JavaScript javascript.

$(document).ready(function() { 
    $("#Radiobuttons").click(function() { 
     if($(this).attr('id') == "Other") { 
      //IF THE ID IS "OTHER" 
      $("#foo").show();   
     } else { 
      //IF THE ID IS NOT "OTHER" 
      $("#foo").hide(); 
     } 
    }); 
}); 

Потому что только с этим, пользователь может отправить форму с текстовым полем пустым, и флажок галочкой, вы можете использовать этот скрипт.

//CHECK IF THE FORM IS SUBMITTED 
if ($("#foo").css('display') != 'none'){ 
    //The text box is visible. Now check if it's empty, with 
    //jQuery, PHP, or any other thing you use. 
} 
+0

Спасибо, но я уже использую это. Но тогда можно отправить форму, когда радио выбрано, и текстовое поле пуст. И когда мне всегда требуется текстовое поле, я получаю ошибки, что он пуст, пока он скрыт. вы понимаете мое затруднительное положение? – Hees1989

+0

@ user3481441 Я уверен, что вы можете проверить, скрыт ли элемент в jQuery. См. Мой отредактированный ответ. – FoxInFlame

0

Я знаю, что этот вопрос довольно старый, хотя, возможно, кто-то воспользуется им. Там есть способ сделать это.

В классе формы удалите метод вводаFilter из __construct. Тогда в вашем методе inputFilter (позволяет назвать его AddInputFilter) добавить В параметре, как это:

public function addInputFilter(array $data) { 

$inputFilter = new InputFilter(); 
$this->setInputFilter($inputFilter) 


//your inputfilters 

if ($data['radiofield'] === 'something') { 
    //add next inputfilters 
} 

//your inputfilters 

} 

Затем перейдите к месту, где вы называете форму (контроллер, вероятно?):

$data = $this->request->getPost(); 

$form->setInputFilter($form->addInputFilter($data->toArray())); 
$form->setData($data); 

// next check if form is valid etc. 

Вот и все.

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