+ 收藏我们

网站模板

网站模板搜索
404模板 营销型模板 外贸网站模板 单页模板 双语模板 标签大全
电话:18630701785
首页 > wordpress > 在 WordPress 中使用 Nette Form 表单类创建表单并提交到后台 >

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

时间:2024-08-01 09:29:14

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

Nette From 类库是 PHP Nette 框架中的表单处理类,我们可以把这个类拿出来单独使用,使用方法也非常简单,我们来看一下,下面的代码都是写在一个 WordPress 标准的页面模板中的。

第一步,安装并引入 Nette-From 类库
通过 Composer 安装 Nette-From 类库
复制
composer require nette/forms
如果不知道怎么使用 Composer,请参考本站之前的文章在WordPress主题或插件中使用 PHP Composer。

引入 Nette From 类
这一步很简单,通过 Composer 安装完成之后,直接在页面模板中引入 Composer 生成的 autoload.php 文件即可。

复制
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 $forms;
提交到后台
最后一步就是把提交过来的数据提交到后台了,提交之前,我们可以先验证一下表单的数据是否符合我们设置的条件,验证过程 Nette From 帮我们处理了,我们只需要简单的判断一下是否验证成功就可以了,如果验证成功,就把数据保存到后台,这里直接使用 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 创建表单,还是使用本文介绍的方法比较方便,相信结果是一目了然的。

标签:Composer用户中心表单

有问题可以加入网站技术QQ群一起交流学习

本站会员学习、解决问题QQ群(691961965)

客服微信号:lpf010888

pbootcms教程

织梦教程

站长学院

SEO

wordpress

竞价教程

信息流

Title