hassanalthaf/formbuildercomponent

一个简单易用的表单构建组件解决方案。

v1.0 2015-09-20 08:55 UTC

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>