解析在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 adodb分页实现代码
Mar 19 PHP
php下安装配置fckeditor编辑器的方法
Mar 02 PHP
php写的带缓存数据功能的mysqli类
Sep 06 PHP
PHP之APC缓存详细介绍 apc模块安装
Jan 13 PHP
PHP按行读取文件时删除换行符的3种方法
May 04 PHP
使用YUI+Ant 实现JS CSS压缩
Sep 02 PHP
php实现按照权重随机排序数据的方法
Jan 09 PHP
php 流程控制switch的简单实例
Jun 07 PHP
php自定义函数实现汉字转换utf8编码的方法
Sep 29 PHP
PHP yii实现model添加默认值的方法(两种方法)
Nov 10 PHP
php面向对象程序设计中self与static的区别分析
May 21 PHP
laravel框架中表单请求类型和CSRF防护实例分析
Nov 23 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 伪造本地文件包含漏洞的代码
2011/11/03 PHP
PHP面向对象——访问修饰符介绍
2012/11/08 PHP
深入php-fpm的两种进程管理模式详解
2013/06/03 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
2014/05/05 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
2018/12/25 PHP
Laravel 数据库加密及数据库表前缀配置方法
2019/10/10 PHP
css把超出的部分显示为省略号的方法兼容火狐
2008/07/23 Javascript
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
Javascript实现时间倒计时效果
2017/07/15 Javascript
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
vuex刷新后数据丢失的解决方法
2020/10/18 Javascript
python通过imaplib模块读取gmail里邮件的方法
2015/05/08 Python
Python中datetime模块参考手册
2017/01/13 Python
Python拼接微信好友头像大图的实现方法
2018/08/01 Python
Python函数装饰器常见使用方法实例详解
2019/03/30 Python
python3.6中@property装饰器的使用方法示例
2019/08/17 Python
python做接口测试的必要性
2019/11/20 Python
python 实现矩阵填充0的例子
2019/11/29 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
Ratchet 模态框的实现
2020/08/19 HTML / CSS
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
来自Ocado的宠物商店:Fetch
2018/07/10 全球购物
XD健身器材:Kevlar球、Crossfit健身球
2019/03/26 全球购物
个人能力自我鉴赏
2014/01/25 职场文书
四年级科学教学反思
2014/02/10 职场文书
行政专员岗位职责说明书
2014/09/01 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
优秀教师推荐材料
2014/12/16 职场文书
铁人纪念馆观后感
2015/06/16 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书
AJAX实现省市县三级联动效果
2021/10/16 Javascript
MySQL 数据类型详情
2021/11/11 MySQL