解析在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 执行系统外部命令 system() exec() passthru()
Aug 11 PHP
探讨如何在php168_cms中提取验证码
Jun 08 PHP
学习php分页代码实例
Oct 24 PHP
基于php和mysql的简单的dao类实现crud操作功能
Jan 27 PHP
zf框架的zend_cache缓存使用方法(zend框架)
Mar 14 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
Jun 10 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
Mar 21 PHP
php实现跨域提交form表单的方法【2种方法】
Oct 17 PHP
ZendFramework框架实现连接两个或多个数据库的方法
Dec 08 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
May 17 PHP
PHP实现数据四舍五入的方法小结【4种方法】
Mar 27 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
js格式化货币数据实现代码
2013/09/04 Javascript
用javascript添加控件自定义属性解析
2013/11/25 Javascript
node.js中的fs.readdirSync方法使用说明
2014/12/17 Javascript
JavaScript中的时间处理小结
2016/02/24 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
js获取所有checkbox的值的简单实例
2016/05/30 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
2017/02/21 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
jquery实现直播弹幕效果
2019/11/28 jQuery
[00:09]DOTA2全国高校联赛 精彩活动引爆全场
2018/05/30 DOTA
python实现socket客户端和服务端简单示例
2014/02/24 Python
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
python获取代码运行时间的实例代码
2018/06/11 Python
程序员写Python时的5个坏习惯,你有几条?
2018/11/26 Python
python简单区块链模拟详解
2019/07/03 Python
Python3+Appium安装使用教程
2019/07/05 Python
python实现的按要求生成手机号功能示例
2019/10/08 Python
python 使用raw socket进行TCP SYN扫描实例
2020/05/05 Python
keras的三种模型实现与区别说明
2020/07/03 Python
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
JAVA和C++区别都有哪些
2015/03/30 面试题
单位创先争优活动方案
2014/01/26 职场文书
高中生期末评语大全
2014/01/28 职场文书
中专毕业生的自荐书
2014/07/01 职场文书
总账会计岗位职责
2015/04/02 职场文书
教师节随笔
2015/08/15 职场文书
春节随笔
2015/08/15 职场文书
《中华上下五千年》读后感3篇
2019/11/29 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL
关于Python中进度条的六个实用技巧分享
2022/04/05 Python