解析在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 相关文章推荐
php将session放入memcached的设置方法
Feb 14 PHP
smarty模板局部缓存方法使用示例
Jun 17 PHP
PHP缓存集成库phpFastCache用法
Dec 15 PHP
php获取从html表单传递数组的方法
Mar 20 PHP
php上传图片并压缩的实现方法
Dec 22 PHP
yii数据库的查询方法
Dec 28 PHP
php简单复制文件的方法
May 09 PHP
php模拟post上传图片实现代码
Jun 24 PHP
php 类中的常量、静态属性、非静态属性的区别
Apr 09 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
Jun 04 PHP
php微信公众号开发之微信企业付款给个人
Oct 04 PHP
PHP-FPM和Nginx的通信机制详解
Feb 01 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
php中实现记住密码下次自动登录的例子
2014/11/06 PHP
php树型类实例
2014/12/05 PHP
smarty模板判断数组为空的方法
2015/06/10 PHP
php实现网站顶踩功能的完整前端代码
2015/07/19 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
2016/06/05 PHP
php + nginx项目中的权限详解
2017/05/23 PHP
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
2020/12/29 PHP
利用javascript实现一些常用软件的下载导航
2009/08/03 Javascript
jquery 多级下拉菜单核心代码
2010/05/21 Javascript
限制textbox或textarea输入字符长度的JS代码
2013/10/16 Javascript
js showModalDialog弹出窗口实例详解
2014/01/07 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
js验证真实姓名与身份证号是否匹配
2015/10/13 Javascript
vue-router传递参数的几种方式实例详解
2018/11/13 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
[48:23]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第一局
2016/03/05 DOTA
python写的一个squid访问日志分析的小程序
2014/09/17 Python
Python线程的两种编程方式
2015/04/14 Python
python开发准备工作之配置虚拟环境(非常重要)
2019/02/11 Python
Python K最近邻从原理到实现的方法
2019/08/15 Python
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
IE滤镜与CSS3效果(详细整理分享)
2013/01/25 HTML / CSS
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
linux面试题参考答案(11)
2016/11/26 面试题
六年级数学教学反思
2014/02/03 职场文书
护士节活动总结
2014/08/29 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
法律讲堂观后感
2015/06/11 职场文书
中学教师教学工作总结
2015/08/13 职场文书
《猴王出世》教学反思
2016/02/23 职场文书
python 定义函数 返回值只取其中一个的实现
2021/05/21 Python
如何正确理解python装饰器
2021/06/15 Python
MySQL七大JOIN的具体使用
2022/02/28 MySQL
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL