解析在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 相关文章推荐
为查询结果建立向后/向前按钮
Oct 09 PHP
利用discuz自带通行证整合dedecms的方法以及文件下载
Mar 06 PHP
JS实现php的伪分页
May 25 PHP
PHP类与对象中的private访问控制的疑问
Nov 01 PHP
简单的php缓存类分享     php缓存机制
Jan 22 PHP
一个经典的PHP文件上传类分享
Nov 18 PHP
thinkphp配置连接数据库技巧
Dec 02 PHP
php中mysql连接方式PDO使用详解
Feb 25 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
Mar 16 PHP
php求数组全排列,元素所有组合的方法
May 05 PHP
PHP实现的回溯算法示例
Aug 15 PHP
Laravel统一错误处理为JSON的方法介绍
Oct 18 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
深入array multisort排序原理的详解
2013/06/18 PHP
兼容ie6浏览器的php下载文件代码分享
2014/07/14 PHP
前端必学之PHP语法基础
2016/01/01 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
window.location.hash 使用说明
2010/11/08 Javascript
jquery 图片上传按比例预览插件集合
2011/05/28 Javascript
13 个JavaScript 性能提升技巧分享
2012/07/26 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
Google 地图叠加层实例讲解
2016/08/06 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
javascript中apply/call和bind的使用
2017/02/15 Javascript
CentOS 安装NodeJS V8.0.0的方法
2017/06/15 NodeJs
python使用三角迭代计算圆周率PI的方法
2015/03/20 Python
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
解决PyCharm同目录下导入模块会报错的问题
2018/10/13 Python
python pandas读取csv后,获取列标签的方法
2018/11/12 Python
Python设计模式之原型模式实例详解
2019/01/18 Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
2019/06/21 Python
python绘制随机网络图形示例
2019/11/21 Python
matplotlib对象拾取事件处理的实现
2021/01/14 Python
解决pycharm 格式报错tabs和space不一致问题
2021/02/26 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
html5播放视频且动态截图实现步骤与代码(支持safari其他未测试)
2013/01/06 HTML / CSS
如何进行Linux分区优化
2013/02/12 面试题
大学生村官心得体会范文
2014/01/04 职场文书
历史专业学生的自我评价
2014/02/28 职场文书
纪念九一八爱国演讲稿600字
2014/09/14 职场文书
2014年实验室工作总结
2014/12/03 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
2015年师德师风自我评价范文
2015/03/05 职场文书
学校捐款活动总结
2015/05/09 职场文书
学校扫黄打非工作总结
2015/10/15 职场文书
Python list列表删除元素的4种方法
2021/11/01 Python