【问题标题】:PHP: Hide Form after validation (class)PHP:验证后隐藏表单(类)
【发布时间】:2014-08-06 13:15:42
【问题描述】:

我有一个主要由名为“buildform”的类生成的表单。 现在表单的每个部分都在它所在的位置上验证自己。 这看起来像这样:

echo $frm->create_input("customer_nr", "Customer Nr.", "text:empty:int");

这里的第三个属性是条件(这里:文本字段,不是空的,只有整数)。 函数“create_input”调用更多函数,在提交表单时直接验证表单字段。 我这样做有多种原因:

  • 出现错误时,我可以直接将表单着色为红色
  • 我只需要告诉表单属性一次,而不是在创建和验证时。

这真的很舒服,到目前为止,创建表单非常容易。

然后用户的验证错误将存储在一个类变量中,如下所示:

function add_err($n_errmsg) {
    $this->errmsgs[] = $n_errmsg;
    return;
}

在表格的最后,我会显示如下错误:

if(isset($_POST["sbm"])) {
    $ret_err = $frm->ret_err();
    if(!empty($ret_err)) {
        echo $ret_err;
    }
    else {
       // send success mail
    }
}

这一切都没有任何问题。 现在我有了在提交表单时隐藏表单的想法。但是在加载表单之前,我必须确保没有错误!

我想要类似的东西

else {
    $hideform = true;
    // send success mail
}

目前这是不可能的,因为在“生成”表单字段时会生成错误。 如果我将错误移到顶部,则错误总是在那里“空”,因为稍后会在下面完成验证...

您知道我该如何解决这个问题吗? 我必须在加载表单之前验证它们还是有其他方法?

谢谢! 最好的祝福 托比

【问题讨论】:

  • 发送电子邮件后,将用户重定向到您没有该表单的登录页面。或者您可以重定向到同一页面,并在该表单上方显示一条会话消息。
  • 能否请您展示您班级的create_input 方法(或者如果它很小,则为整个班级/如果不是,则为pastebin)。我认为需要一个简单的重构,但需要看代码
  • 它会创建表单域并调用验证函数:paste.ofcode.org/35ucC4QFUJPWDtikWgfa9xX 你也需要验证函数吗?

标签: php forms class validation hide


【解决方案1】:

好的,有几种方法可以解决这个问题。

基本上你是在响应表单 html:

echo $frm->create_input(...);
echo $frm->create_input(...);

您可以做的是将 html 保存到字符串中:

$formhtml = '';
$formhtml .= $frm->create_input(...);
$formhtml .= $frm->create_input(...);

if($frm->ret_error()){
    echo $formhtml;
    //other logic
}else{
    //send mail
}

同样,您可以更改表单类,以便在内部完成,并添加一个 show 方法:

private $html = '';
function create_input(...){
    //retrun $ret;
    $this->html .= $ret;
function show(){
    echo $this->html;
}


$frm->create_input(...);
$frm->create_input(...);

if($frm->ret_error()){
    $frm->show();
    //other logic
}else{
    //send mail
}

【讨论】:

  • 是的!将表单存储到 var 是我搜索的内容:D 我使用 ob_start();和 ob_get_clean();成功!谢谢!我根本没有使用 show() 函数……那有什么用?……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-05
  • 2012-06-28
  • 1970-01-01
相关资源
最近更新 更多