Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
学习编写PHP表单框架代码_Php_Forms_Frameworks - Fatal编程技术网

学习编写PHP表单框架代码

学习编写PHP表单框架代码,php,forms,frameworks,Php,Forms,Frameworks,您是否看过专门关于PHP表单框架的书籍、文章或教程?我说的不是整个框架,而是处理表单的部分。现在,我已经使用了Zend的表单和Symfony的表单,我正在学习如何构建框架,并停留在“如何构建表单框架”部分 我试着阅读Zend和Symfony的代码,但我认为它太大太复杂了,没有任何解释。您是否有任何建议,甚至可能有人介意解释表单框架是如何工作的(或者更好,如何构建表单框架) 到目前为止,我得到的是: 我需要创建一个抽象表单对象,这样应用程序中的所有其他表单都可以从这里继承。表单必须至少有用于配置和

您是否看过专门关于PHP表单框架的书籍、文章或教程?我说的不是整个框架,而是处理表单的部分。现在,我已经使用了Zend的表单和Symfony的表单,我正在学习如何构建框架,并停留在“如何构建表单框架”部分

我试着阅读Zend和Symfony的代码,但我认为它太大太复杂了,没有任何解释。您是否有任何建议,甚至可能有人介意解释表单框架是如何工作的(或者更好,如何构建表单框架)

到目前为止,我得到的是:

  • 我需要创建一个抽象表单对象,这样应用程序中的所有其他表单都可以从这里继承。表单必须至少有用于配置和保存的方法
  • 我们需要一个基本小部件类(用于表单元素)和一个基本验证器类(用于表单元素和小部件)
  • 我们需要以某种方式连接所有的形式。这是让我困惑的部分。如何连接所有这些元素

  • 有人能给我一个提示吗

    我在我的小框架中创建了一些东西来抽象形式的创建

    基本上我有两个主要的课程。元素类和元素容器类

    除了form、fieldset、div等(包含其他元素的元素)扩展element\u容器类之外,我的大多数元素都扩展了element类

    这是我的简单输入类:

    class acs_form_input extends acs_element {
    
        public function __construct($name) {
    
            //These propertie is declared in the parent class
    
            //By default the type is set to text
            $this->setAttribute('type','text');
            $this->setAttribute('name',$name);
            $this->setAttribute('id',$name);
    
            $this->tpl_path = 'html/forms/form_input';
        }
    }
    
    由于它扩展了元素类,我只需要说明这是什么类型以及它将使用什么模板,所以呈现过程都是在父类中完成的

    element_容器类基本上是相同的,只是它可以容纳其他元素,因此在渲染时有一些额外的处理(基本上是一个循环,呈现元素的html)

    我认为这是一个模型,所以这里有一个简单的表单代码:

     $this->form->addText('name','Nome*');
            $this->form->addText('empresa','Empresa');
            $this->form->addText('morada','Morada')->setAttribute('size','60');
            $this->form->addText('cpostal1','C. Postal');
            $this->form->addText('cpostal2','-')->setAttribute('size','6');
            $this->form->addText('loc','Localidade');
            $this->form->addText('tel','Telefone');
            $this->form->addText('fax','Fax');
            $this->form->addText('email','E-mail*');        
            $this->form->addTextArea('msg','Mensagem*');
            $this->form->addSubmit('sub', 'Enviar »');
    
    希望这能让您了解如何创建自己的表单框架


    注意:我无法将调用链接到表单,因为每个“add[element]”方法都返回所创建元素的实例

    我现在在各种项目上使用CakePHP或Zend_表单,我自己也不再使用它了,但几年前,我编写了一个相对完整的表单库,就像您所讨论的,用于一个您从未听说过的很少使用的框架

    无论如何,这是PHP4代码,但它在生产中使用过,对我们来说效果很好。在本例中,表单类本身是抽象的,您继承它并定义表单

    用于帮助创建表单的InputField类:

    Webform类:

    我不主张你真的尝试使用这些。首先,您必须删除或模拟它所具有的所有其他依赖项(而且它有许多,最重要的是从外观上看,它有用于错误处理的框架的错误和警告类)


    但我确实认为如果你对这个主题感兴趣,你可能会感兴趣

    您需要这个表单框架做什么?也就是说,你想解决什么问题?我认为,错误的方法是尝试和模仿已经完成的工作——从某种意义上说,框架XYZ有抽象的表单类和小部件类,因此我也必须需要它们。事实上,现有框架对这些类有特定的原因,这是由需求驱动的。你知道这些需求是什么吗?没有表单框架。Zend_表单是一种抽象,旨在使表单构建更加统一,但仅此而已。这背后没有什么大道理,一切都是基于HTML表单的。子表单的概念并不是一个真正的概念,只是一个技巧,每个表单实际上都是一个单独的表单。对不起,我们的网络(Internet)目前状况不佳,我有一个约会正在等待。我会尽快更新这个问题-添加我需要表单框架做的事情。谢谢。当时无法真正编辑它:(.但是问题现在解决了。谢谢大家的建议。而且,和我们大多数人一样,我对我的代码感到畏缩!很多事情都只是PHP4和框架的工作方式。但是,例如,方法顶部的方法文档而不是PHPDoc?!我在想什么呢!!啊,我想这是进步的标志:瞧回头看看,知道你现在会做得更好。