解析在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函数utf8转gb2312编码
Dec 21 PHP
PHP 程序员的调试技术小结
Nov 15 PHP
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
Mar 26 PHP
PHP header()函数使用详细(301、404等错误设置)
Apr 17 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
Jul 05 PHP
php实现递归抓取网页类实例
Apr 03 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
Jul 28 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
May 29 PHP
详解将数据从Laravel传送到vue的四种方式
Oct 16 PHP
Laravel 实现添加多语言提示信息
Oct 25 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
Apr 13 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 UTF-8、Unicode和BOM问题
2010/05/18 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
2013/06/06 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
2013/06/20 PHP
PHP共享内存用法实例分析
2016/02/12 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
JavaScript中的其他对象
2008/01/16 Javascript
jquery中ajax调用json数据的使用说明
2011/03/17 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
自适应布局meta标签中viewport、content、width、initial-scale、minimum-scale、maximum-scale总结
2017/08/18 Javascript
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
jQuery 改变P标签文本值方法
2018/02/24 jQuery
详解mpvue小程序中怎么引入iconfont字体图标
2018/10/01 Javascript
在pycharm中开发vue的方法步骤
2020/03/04 Javascript
[48:52]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第一局
2016/02/25 DOTA
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
在Python中使用gRPC的方法示例
2018/08/08 Python
python判断输入日期为第几天的实例
2018/11/13 Python
python实现顺时针打印矩阵
2019/03/02 Python
python sort、sort_index方法代码实例
2019/03/28 Python
使用Tkinter制作信息提示框
2020/02/18 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
学校消防安全制度
2014/01/30 职场文书
《孔子拜师》教学反思
2014/02/24 职场文书
文明村创建实施方案
2014/03/27 职场文书
2015年敬老月活动总结
2015/03/27 职场文书
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫
在Python 中将类对象序列化为JSON
2022/04/06 Python
nginx 添加http_stub_status_module模块
2022/05/25 Servers