解析在zend Farmework下如何创立一个FORM表单


Posted in PHP onJune 28, 2013

1.首先让我们设置一下我们的程序,让Zend能够自动载入方法,不需要我们手动的去载入

require_once 'Zend/Loader/Autoloader.php'    //载入自动加载类
$loader = Zend_Loader_Autoloader::getInstance();//自动实例化
$loader->registerNamespace('Application_');//注册命名空间(只有系统默认的,和注册的才可以被自动载入)
$loader->registerNamespace(array('Foo_', 'Bar_')); //多个命名空间的注册方法
$loader->setFallbackAutoloader(true);  //一个增加消耗的方法,不需要命名空间,直接载入所有类(不被推荐使用)

然后请注意,你的包含目录是否已经包含了,你自己的需被载入的目录
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    realpath(APPLICATION_PATH . '/forms/'),
    get_include_path(),
)));
//这里我们包含了我们的forms目录,方便程序的被载入

2.确认下form的目录
在application/forms/下 建立一个  Guestbook.phps
作为我们form的类文件,如下:
<?php
 class Application_Form_Guestbook extends Zend_Form
{
    public function init()
    {
        // Set the method for the display form to POST
        $this->setMethod('post');//设置提交方式        // Add an email element
        $this->addElement('text', 'email', array(//原件的类型,名词,和一些其他信息的定义
            'label'      => 'Your email address:',
            'required'   => true,
            'filters'    => array('StringTrim'),
            'validators' => array(
                'EmailAddress',
            )
        ));
        // Add the comment element
        $this->addElement('textarea', 'comment', array(
            'label'      => 'Please Comment:',
            'required'   => true,
            'validators' => array(
                array('validator' => 'StringLength', 'options' => array(0, 20))
                )
        ));
        // Add a captcha
        $this->addElement('captcha', 'captcha', array(
            'label'      => 'Please enter the 5 letters displayed below:',
            'required'   => true,
            'captcha'    => array(
                'captcha' => 'Figlet',
                'wordLen' => 5,
                'timeout' => 300
            )
        ));
        // Add the submit button
        $this->addElement('submit', 'submit', array(
            'ignore'   => true,
            'label'    => 'Sign Guestbook',
        ));
        // And finally add some CSRF protection
        $this->addElement('hash', 'csrf', array(
            'ignore' => true,
        ));
    }
}

然后添加一个路由控制文件
applictaion/controller/GuestbookController.php
<?php
class GuestbookController extends Zend_Controller_Action
{
    // snipping indexAction()...
    public function signAction()
    {
        $request = $this->getRequest();//获取接受到得信息
       // include_once("../application/forms/Guestbook.php");  手动加载类,只有不能自动载入时,才需要
        $form    = new Application_Form_Guestbook;//实例化这个方法        if ($this->getRequest()->isPost()) {//如果是POST传递的结果
            if ($form->isValid($request->getPost())) {//判断传递是否有效
                $comment = new Application_Model_Guestbook($form->getValues());
                $mapper  = new Application_Model_GuestbookMapper();
                $mapper->save($comment);
                return $this->_helper->redirector('index');
            }
        }
        $this->view->form = $form;//将表单赋值给试图
    }
}

最后添加一个简单的sign视图文件即可:
地址:application/views/scripts/guestbook/sgin.php
Please use the form below to sign our guestbook!
<?php
$this->form->setAction($this->url());
echo $this->form;

PHP 相关文章推荐
5.PHP的其他功能
Oct 09 PHP
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
Mar 15 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
Jun 23 PHP
php采用curl实现伪造IP来源的方法
Nov 21 PHP
php开发时容易忘记的一些技术细节
Feb 03 PHP
PHP6新特性分析
Mar 03 PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
Mar 22 PHP
php检测mysql表是否存在的方法小结
Jul 20 PHP
Laravel学习教程之本地化模块
Aug 18 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
Mar 30 PHP
php实现文件上传基本验证
Mar 04 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
Apr 29 PHP
解析zend Framework如何自动加载类
Jun 28 #PHP
使用PHP接收POST数据,解析json数据
Jun 28 #PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
Jun 28 #PHP
下拉列表多级联动dropDownList示例代码
Jun 27 #PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
Jun 27 #PHP
PHP数组排序函数合集 以及它们之间的联系分析
Jun 27 #PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
Jun 27 #PHP
You might like
实现“上一页”和“下一页按钮
2006/10/09 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
php计算函数执行时间的方法
2015/03/20 PHP
juqery 学习之四 筛选查找
2010/11/30 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
jquery.validate 自定义验证方法及validate相关参数
2016/01/18 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
仿iframe效果Aajx文件上传实例
2016/11/18 Javascript
javascript 中的继承实例详解
2017/05/05 Javascript
微信小程序视图template模板引用的实例详解
2017/09/20 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
2017/11/14 Javascript
详解create-react-app 2.0版本如何启用装饰器语法
2018/10/23 Javascript
vue 实现用户登录方式的切换功能
2020/04/14 Javascript
vue a标签点击实现赋值方式
2020/09/07 Javascript
js实现随机圆与矩形功能
2020/10/29 Javascript
在Python中使用成员运算符的示例
2015/05/13 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
2017/09/26 Python
python+selenium实现登录账户后自动点击的示例
2017/12/22 Python
python识别文字(基于tesseract)代码实例
2019/08/24 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
英国买鞋网站:Charles Clinkard
2019/11/14 全球购物
添柏岚英国官方网站:Timberland英国
2019/11/28 全球购物
店面销售职位的职责
2014/03/09 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
应聘教师求职信
2014/07/19 职场文书
班级元旦晚会开幕词
2015/01/29 职场文书
java objectUtils 使用可能会出现的问题
2022/02/28 Java/Android
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers
Android开发 使用文件储存的方式保存QQ密码
2022/04/24 Java/Android
大型强子对撞机再次重启探索“第五种自然力”
2022/04/29 数码科技