在 WordPress 中使用 Nette Form 表单类创建表单并提交到后台

文 / @WordPress主题

使用NetteFrom类库创建WordPress自定义表单

大家好,我是小本本,今天要和大家介绍一下如何在WordPress中使用页面模板创建自定义表单。

在WordPress中使用页面模板创建自定义表单,让用户从前端页面输入数据过程是很麻烦的,主要麻烦的地方在于创建HTML表单并验证用户提交的数据,这一个过程需要写很多代码,一不小心,很容易会出错,导致表单提交不了,或出现一些安全性问题。

第一步,安装并引入Nette-From类库

通过Composer安装Nette-From类库

我们可以通过Composer安装NetteFrom类库,具体命令如下:

composer require nette/forms

如果不知道怎么使用Composer,请参考本站之前的文章在WordPress主题或插件中使用PHP Composer

引入NetteFrom类

安装完成之后,可以直接在WordPress标准的页面模板中引入Composer生成的autoload.php文件,然后引入NetteFrom类:

require_once(dirname(__FILE__).'/vendor/autoload.php');

use Nette\Forms\Form;

创建表单并显示

最重要的一步就是创建表单了,这也是和直接使用HTML创建表单不同的地方,在这里,创建表单的代码完全写在PHP中,不用再去写乱七八糟的HTML代码了,代码量减少了不少,出错的机会自然也少了。

下面是一个创建自定义表单的示例代码:

// 获取用户数据,为表单设置默认数据时使用
$uid = wp_get_current_user()->ID;
$nickname = get_user_meta($uid, 'nickname', true);
$card = get_user_meta($uid, 'card', true);

// 创建表单
$form = new Form;

$form->setMethod('POST');

$form->addText('nickname', '昵称:')
     ->setRequired('请输入昵称') // 这里设置了验证此项为必填项
     ->setDefaultValue($nickname);

$form->addText('card', '会员卡号:')
     ->setDefaultValue($card);

$form->addSubmit('send', '修改资料');

// 显示表单
echo $form;

提交到后台

最后一步就是把提交过来的数据提交到后台了,提交之前,我们可以先验证一下表单的数据是否符合我们设置的条件,验证过程NetteFrom帮我们处理了,我们只需要简单的判断一下是否验证成功就可以了,如果验证成功,就把数据保存到后台,这里直接使用update_user_meta把数据保存到了用户自定义字段。如果验证失败,就显示错误提示信息。

下面是一个将数据保存到数据库中的示例代码:

// 验证表单
if ($form->isSuccess()) {
    // 获取表单的值,有了这个,就不用通过丑陋的$_POST[*]来获取表单提交的值了。
    $values = $form->getValues();
    // 保存自定义字段,有了这个操作,才能保存数据到数据库中
    update_user_meta($uid, 'nickname', $values->nickname);
    update_user_meta($uid, 'card', $values->card);

    // 显示成功提醒
    echo '<div class="ui-c-alert ui-c-alert-success">用户资料修改成功</div>';
}

// 如果表单有错误,显示错误信息
$form->render('errors');

到这里,一个功能完整的表单就处理好了。当然,演示代码中需要处理的数据比较少,看起来可能没什么必要。试想一下,如果表单项非常多的情况下,直接使用HTML创建表单,还是使用本文介绍的方法比较方便,相信结果是一目了然的。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。