解析在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 相关文章推荐
PHP5在Apache下的两种模式的安装
Sep 05 PHP
基于OpenCV的PHP图像人脸识别技术
Oct 11 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
Dec 25 PHP
ThinkPHP中RBAC类的四种用法分析
Nov 24 PHP
一款简单实用的php操作mysql数据库类
Dec 08 PHP
PHP实现格式化文件数据大小显示的方法
Jan 03 PHP
php+Ajax处理xml与json格式数据的方法示例
Mar 04 PHP
PHP implode()函数用法讲解
Mar 08 PHP
Laravel框架验证码类用法实例分析
Sep 11 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
Oct 16 PHP
PHP高并发和大流量解决方案整理
Mar 09 PHP
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
Apr 01 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数组函数序列之in_array() - 查找数组中是否存在指定值
2011/11/07 PHP
php获取域名的google收录示例
2014/03/24 PHP
destoon设置自定义搜索的方法
2014/06/21 PHP
Linux中为php配置伪静态
2014/12/17 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
Javascript公共脚本库系列(一): 弹出层脚本
2011/02/24 Javascript
js模拟hashtable的简单实例
2014/03/06 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
jquery组件WebUploader文件上传用法详解
2020/10/23 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
2017/11/09 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
Python中属性和描述符的正确使用
2016/08/23 Python
Python多线程模块Threading用法示例小结
2019/11/09 Python
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
2017/09/15 HTML / CSS
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
什么是TCP/IP
2014/07/27 面试题
专科毕业生求职简历的自我评价
2013/10/12 职场文书
市优秀教师事迹材料
2014/02/05 职场文书
党员领导干部廉洁从政承诺书
2014/03/27 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
员工合理化建议书
2014/05/19 职场文书
工作目标责任书
2014/07/23 职场文书
公司领导班子四风对照检查材料
2014/09/27 职场文书
2014年外联部工作总结
2014/11/17 职场文书
法院个人总结
2015/03/03 职场文书
一个都不能少观后感
2015/06/04 职场文书
银行文明优质服务培训心得体会
2016/01/09 职场文书
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python