联系表格7 - 总和验证

时间:2016-12-12 13:49:34

标签: php forms validation sum field

我正在尝试插入错误消息,无论某些输入字段的总和是否大于某个数字。

更具体地说,联系表格是询问酒店房间的空缺。 对于每个房间,我需要知道那个房间里有多少人/宠物。 当然,它有一个限制,那就是4个人/宠物。

我想在他们为超过4人/宠物预订房间的任何时候插入错误消息。

在联系表格中,它将类似于:

<label> Adults*
[select* r1-adults "1" "2" "3" "4"] </label>
<label> Children*
[select* r1-children "0" "1" "2" "3"] </label>
<label> Babies*
[select* r1-babies "0" "1" "2" "3"] </label>
<label> Pets*
[select* r1-pets "0" "1" "2" "3"] </label>

在functions.php中:

add_filter( 'wpcf7_max_capacity*', 'custom_max_capacity_validation_filter', 20, 2 );

function custom_max_capacity_validation_filter( $result, $tag, $zero, $adults, $children, $babies, $pets ) {
$tag = new WPCF7_FormTag( $tag );
$zero = "0";
if ( 'r1-adults' == $tag->name AND 'r1-children' == $tag->name AND 'r1-babies' == $tag->name AND 'r1-pets' == $tag->name ) {
    $adults = isset( $_POST['r1-adults'] ) ? settype(trim( $_POST['r1-adults'] ), "integer") : settype($zero, "integer");
    $children = isset( $_POST['r1-children'] ) ? settype(trim( $_POST['r1-children'] ), "integer") : settype($zero, "integer");
    $babies = isset( $_POST['r1-babies'] ) ? settype(trim( $_POST['r1-babies'] ), "integer") : settype($zero, "integer");
    $pets = isset( $_POST['r1-pets'] ) ? settype(trim( $_POST['r1-pets'] ), "integer") : settype($zero, "integer"); 
    $sum=$adults+$children+$babies+$pets;
    if ($sum > 4 ) {
        $result->invalidate( $tag, "Max occupancy per room allowed 4 people/pets" );
        }
    }
    return $result;
}

我从这里开始主草稿:http://contactform7.com/2015/03/28/custom-validation/

然而,它不起作用。实际上,我不确定如何调整条件

if ( 'your-email-confirm' == $tag->name )

对我来说。

有人可以帮我修复这个功能吗?谢谢!

0 个答案:

没有答案