解析在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 VS ASP
Oct 09 PHP
实用函数5
Nov 08 PHP
php 保留小数点
Apr 21 PHP
php设计模式 State (状态模式)
Jun 26 PHP
php对图像的各种处理函数代码小结
Jul 08 PHP
PHP中使用循环实现的金字塔图形
Nov 08 PHP
php实现mysql备份恢复分卷处理的方法
Dec 26 PHP
php遍历目录方法小结
Mar 10 PHP
PHP使用redis实现统计缓存mysql压力的方法
Nov 14 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
PHP 获取客户端 IP 地址的方法实例代码
Nov 11 PHP
PHP面向对象程序设计__tostring()和__invoke()用法分析
Jun 12 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
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
php基于socket实现SMTP发送邮件的方法
2015/03/05 PHP
删除PHP数组中头部、尾部、任意元素的实现代码
2017/04/10 PHP
Yii1.1框架实现PHP极光推送消息通知功能
2018/09/06 PHP
浅谈php调用python文件
2019/03/29 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
jquery动态加载图片数据练习代码
2011/08/04 Javascript
jquery队列queue与原生模仿其实现方法分享
2014/03/25 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
jquery统计用户选中的复选框的个数
2014/06/06 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
2017/02/14 Javascript
使用jQuery实现动态添加小广告
2017/07/11 jQuery
JavaScript屏蔽Backspace键的实现代码
2017/11/02 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 Javascript
layui禁用侧边导航栏点击事件的解决方法
2019/09/25 Javascript
JS删除数组指定值常用方法详解
2020/06/04 Javascript
Python3.6简单操作Mysql数据库
2017/09/12 Python
python文件选择对话框的操作方法
2019/06/27 Python
windows上彻底删除jupyter notebook的实现
2020/04/13 Python
python学习笔记之多进程
2020/08/06 Python
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
介绍一下Mysql的存储引擎
2015/02/12 面试题
淘宝网店营销策划书
2014/01/11 职场文书
货车司机岗位职责
2014/03/18 职场文书
委托书范本
2014/04/02 职场文书
2014年生活老师工作总结
2014/12/23 职场文书
停课通知书
2015/04/24 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers
Python 中数组和数字相乘时的注意事项说明
2021/05/10 Python