hassanalthaf / formbuildercomponent
一个简单易用的表单构建组件解决方案。
Requires
- php: >=5.5.0
This package is not auto-updated.
Last update: 2024-09-28 18:37:05 UTC
README
##目录
##这是什么
这是一个易于使用的表单构建组件。它目前仅用于生成HTML表单代码。但是,我这样构建它是为了方便你生成其他语言的表单代码,也许是因为你懒得手动输入所有内容,而希望以自动化的方式完成任务。
##如何使用
这非常简单!首先,你需要在composer.json文件中像这样运行以引入它:
composer require hassanalthaf/formbuildercomponent
运行后,你将在应用程序中获得它。
然后,你只需要
use \HassanAlthaf\Form;
这将使你能够使用表单构建组件。接下来,你需要定义一个FormBuilder,如下所示
$formBuilder = new FormBuilders\HtmlFormBuilder(); // Now, you need to define the attributes for the <form> element. $formBuilder->newForm(['method' => 'post', 'action' => '']); // Saving the form with a name to uniquely identify it. Note that it doesn't affect the name attribute of the form. $formBuilder->saveForm("testForm"); // Showing the form. echo $formBuilder->buildMarkup("testForm");
一旦运行了上面的代码,如果查看你的页面源代码,你会注意到
元素已经创建。在这个包中,你可以创建各种类型的表单元素。要创建一个标签,你只需要在新Form(...)方法调用后编写此代码
$labelTest = new FormElements\HtmlFormElements\HtmlLabel(); $labelTest->addAttribute("for", "password"); $labelTest->setDisplayName('Password'); $formBuilder->addElement($labelTest, 'labelTest');
对于输入字段,你可以这样做
$passwordField = new FormElements\HtmlFormElements\HtmlInputField(); $passwordField->addAttribute("type", "password"); $passwordField->addAttribute("name", "password"); $passwordField->addAttribute("placeholder", "Password"); $passwordField->addAttribute("id", "password"); $formBuilder->addElement($passwordField, 'passwordField');
很简单,对吧?现在,你可能想保存所有代码并尝试查看它显示的内容。你可能会注意到一个标签和一个密码输入字段。做得好!你已经掌握了如何使用它的基本方法。接下来,让我们看看如何使用文本区域。
$textarea = new FormElements\HtmlFormElements\HtmlTextArea(); $textarea->setText("Example"); $textarea->addAttribute('cols', '5'); $textarea->addAttribute('rows', '5'); $formBuilder->addElement($textarea, 'textareaTest');
现在,一旦你保存它,它将显示一个相当不错的文本区域。
接下来,我们有一些提交数据的按钮。这是一个示例按钮
$submitButton = new FormElements\HtmlFormElements\HtmlButton("Login"); $submitButton->addAttribute("name", "login"); $formBuilder->addElement($submitButton, 'submitButton');
很简单,对吧?让我们继续更复杂一些的基本表单元素。让我们看看如何定义单选按钮。
/* Creating a radio button with two radio button options: $maleField and $femaleField */ $radioButton = new FormElements\HtmlFormElements\HtmlRadioButton("Gender"); $maleField = new FormElements\HtmlFormElements\HtmlInputField(); $maleField->addAttribute("value", "Male"); $maleField->addAttribute("type", "radio"); $femaleField = new FormElements\HtmlFormElements\HtmlInputField(); $femaleField->addAttribute("value", "Female"); $femaleField->addAttribute("type", "radio"); /* Requires exception to be caught */ try { $radioButton->addField($maleField, "male"); $radioButton->addField($femaleField, "female"); } catch (\Exception $ex) { print_r($ex); }
在上面的代码中,你会注意到一个$radioButton
变量。这实际上是HtmlRadioButton类的实例。这个类基本上接受一个参数来定义单选按钮<select>
元素的name属性。一旦定义,你需要定义实际的单选按钮,即<option>
元素。所以在这个例子中,我创建了两个:$maleField
和$femaleField
。然后,在定义它们之后,我只需将它们添加到$radioButton
类中。然后,我只需将$radioButton
类添加到$formBuilder
中。就是这样!
最后但同样重要的是,下拉列表!
/* Creating a dropdownlist with 3 different list elements */ $dropDownList = new FormElements\HtmlFormElements\HtmlDropDownList(); $dropDownList->addAttribute("name", "vehicles"); $bugattiListElement = new FormElements\HtmlFormElements\HtmlListElement(); $bugattiListElement->setDisplayValue("Bugatti"); $bugattiListElement->addAttribute("value", "bugatti"); $lamborghiniListElement = new FormElements\HtmlFormElements\HtmlListElement(); $lamborghiniListElement->setDisplayValue("Lamborghini"); $lamborghiniListElement->addAttribute("value", "lamborghini"); $ferrariListElement = new FormElements\HtmlFormElements\HtmlListElement(); $ferrariListElement->setDisplayValue("Ferrari"); $ferrariListElement->addAttribute("value", "ferrari"); $dropDownList->addListElement($bugattiListElement, "bugatti"); $dropDownList->addListElement($lamborghiniListElement, "lamborghini"); $dropDownList->addListElement($ferrariListElement, "ferrari"); $formBuilder->addElement($dropDownList, 'dropDownList');
所以在这个上面的下拉列表中,我创建了一个对象HtmlDropDownList()
,分配给$dropDownList
,然后创建了列表元素:$buggatiListElement
、$lamborghiniListElement
和$ferrariListElement
。在创建这些列表元素之后,我只需将它们添加到$dropDownList
中,然后最终将$dropDownList
添加到$formBuilder
中
我相信这基本上就是全部内容!但是,真正让人惊奇的是,你可以使用PHP非常容易地删除和更改元素、属性等!
让我们假设你保存表单后,想删除上面创建的文本区域,我们只需这样做:
$formBuilder->edit("testForm"); $formBuilder->removeElement('textareaTest'); $formBuilder->saveForm("testForm"); echo $formBuilder->buildMarkup("testForm");
这将删除它,就这么简单。
##如何贡献
你想贡献但不知道如何做?很简单。你可以随时查看拉取请求、问题等,帮助他人。或者,如果你想为代码库做出贡献,你可以随时通过添加更多表单元素等方式帮助我维护代码库,并时不时地对代码进行优化。这样的助手非常受欢迎!
##致谢
哈桑·阿尔塔夫 - 主要开发者 <hassan [at] hassanalthaf [dot] com>