解析在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动态图像的创建
Oct 09 PHP
生成sessionid和随机密码的例子
Oct 09 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
Sep 01 PHP
PHP取得一个类的属性和方法的实现代码
May 22 PHP
实用的简单PHP分页集合包括使用方法
Oct 21 PHP
php Imagick获取图片RGB颜色值
Jul 28 PHP
php获取发送给用户的header信息的方法
Mar 16 PHP
微信公众平台之快递查询功能用法实例
Apr 14 PHP
PHP编程之设置apache虚拟目录
Jul 08 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
Jun 20 PHP
PHP中引用类型和值类型功能与用法示例
Feb 26 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
Dec 10 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 时间计算问题小结
2009/01/04 PHP
那些年一起学习的PHP(二)
2012/03/21 PHP
PHP的swoole扩展安装方法详细教程
2016/05/18 PHP
javascript 面向对象 function类
2010/05/13 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
10 种最常见的 Javascript 错误(频率最高)
2018/02/08 Javascript
vue实现点击当前标签高亮效果【推荐】
2018/06/22 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
[03:39]2015国际邀请赛主赛事首日精彩回顾
2015/08/05 DOTA
python多重继承新算法C3介绍
2014/09/28 Python
python实现复制整个目录的方法
2015/05/12 Python
python中argparse模块用法实例详解
2015/06/03 Python
基于DATAFRAME中元素的读取与修改方法
2018/06/08 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
python获取引用对象的个数方式
2019/12/20 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
python3.6中anaconda安装sklearn踩坑实录
2020/07/28 Python
全面解析HTML5中的标准属性与自定义属性
2016/02/18 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
大学生自我鉴定
2013/12/16 职场文书
幼儿园国庆节活动方案
2014/02/01 职场文书
会计人员演讲稿
2014/09/11 职场文书
民主评议党员自我评议范文2014
2014/09/26 职场文书
博士生专家推荐信
2014/09/26 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
学雷锋献爱心活动总结
2015/05/11 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书
nginx常用命令放入shell脚本详解
2021/03/31 Servers
nginx处理http请求实现过程解析
2021/03/31 Servers
详解MySQL 联合查询优化机制
2021/05/10 MySQL
微软Win11有哪些隐藏功能? windows11多个功能汇总
2021/11/21 数码科技
小喇叭开始广播了! 四十多年前珍贵老照片
2022/05/09 无线电