解析在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读MYSQL中文乱码的解决方法
Dec 17 PHP
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
Sep 10 PHP
php存储过程调用实例代码
Feb 03 PHP
php Hex RGB颜色值互换的使用
May 10 PHP
Win7下手动安装apache2.2、php5.4笔记
Apr 03 PHP
php 批量查询搜狗sogou代码分享
May 17 PHP
PHP实现微信发红包程序
Aug 24 PHP
PHP的Yii框架入门使用教程
Feb 15 PHP
php实现将HTML页面转换成word并且保存的方法
Oct 14 PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 PHP
Laravel 自带的Auth验证登录方法
Sep 30 PHP
浅谈Laravel中的三种中间件的作用
Oct 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
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
PHP之正则表达式捕获组与非捕获组(详解)
2015/07/29 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
如何用js控制css中的float的代码
2007/08/16 Javascript
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
使用JQuery和CSS模拟超链接的用户单击事件的实现代码
2012/05/23 Javascript
append和appendTo的区别以及appendChild用法
2013/12/24 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
2014/03/27 Javascript
js确认删除对话框适用于a标签及submit
2014/07/10 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
mpvue项目中使用第三方UI组件库的方法
2018/09/30 Javascript
nodejs中实现修改用户路由功能
2019/05/24 NodeJs
Vue代码整洁之去重方法整理
2019/08/06 Javascript
keep-alive不能缓存多层级路由菜单问题解决
2020/03/10 Javascript
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
Python中collections模块的基本使用教程
2018/12/07 Python
windows下搭建python scrapy爬虫框架步骤
2018/12/23 Python
opencv设置采集视频分辨率方式
2019/12/10 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
2020/06/12 Python
Python实现GIF图倒放
2020/07/16 Python
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
建筑公司文秘岗位职责
2013/11/29 职场文书
个人素质的自我评价分享
2013/12/16 职场文书
2014全国两会学习心得体会1000字
2014/03/10 职场文书
课外访万家心得体会
2014/09/03 职场文书
组织生活会表态发言材料
2014/10/17 职场文书
《鲸》教学反思
2016/02/23 职场文书
解决Mysql中的innoDB幻读问题
2022/04/29 MySQL