2014-02-19 166 views
2

我有60个不同的问题,您必须从1到10的范围内回答(使用单选按钮)。验证单选按钮

<?php 

    echo $this->Form->create(); 
    $options = array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10'); 
    $attributes = array('legend' => false); 

?> 

<div class="answers"> 
    <?php 
    echo $this->Form->radio('answer1', $options, $attributes); 
    ?> 
</div> 

为ANSWER2,ANSWER3,同样的事情...

现在我想验证,看看是否一个单选按钮被实际点击所以不是:

每个答案都与下面的代码中给出空。 我有这样的:

public $validate = array( 
    'answer1' =>array(
     'rule' => 'notEmpty', 
     'message' => 'Please choose an answer' 
     )  
); 

有没有办法验证所有60只形成一次?或者我必须输入$validate中的每个答案?

+0

全部60 _forms_?你可以使用beforeValidate为每个答案生成相同的验证规则。 – AD7six

+0

没有只有1个表格,我的不好。 – Jnb

回答

0

通过它放在一个阵列和循环中的字段的名称(模型的构造函数)

$fields = array('answer1', 'answer2', 'answer3'); //all fields you need to validate 
foreach($fields as $field) { 
    $validate[$field] = array(
     'rule' => 'notEmpty', 
     'message' => 'Please choose an answer' 
    ); 
} 

顺便说一句,以检查按钮的值是有效的(在你的情况1至10之间的数字)您可以使用inList

public $validate = array(
    'function' => array(
     'allowedChoice' => array(
      'rule' => array('inList', array('1', '2', '3', '4')) //And so on 
     ) 
    ) 
); 
+0

如何排除我的表格中的一个字段? (answer_id) – Jnb

+0

只是不要把它放在数组'$ fields'! –

+0

$ fields = $ this-> Survey-> find('all'); 我用这个来制作我的数组。 – Jnb