>本教程探讨了在Symfony 2中形成处理的两种方法。第一个演示直接在视图中嵌入形式元素,并在控制器中手动处理它们。第二个利用Symfony的表单系统进行面向对象的表单声明和自动处理和持久性。
>我们将使用Symfony的默认acmedemobundle进行插图。 完整的代码可在[此储存库](repositority_link_here-替换为实际链接)中可用密钥概念:
Symfony 2提供了两种用于形式创建和处理的主要方法:通过基于控制器的处理在视图中嵌入手册HTML,以及Symfony的面向对象的表单系统。 通过将标准的HTML表单元素添加到Symfony View文件中,可以创建
>非实现表单。这涉及一个包含形式HTML的视图文件,逻辑处理(渲染,处理)的控制器方法以及将URL映射到控制器方法的路由。>查看文件创建:
symfony实体和表格: )。我们将使用五个文件:控制器, ,),>表单类型类别。
>
form1.html.twig
src/Acme/DemoBundle/Resources/views/Welcome
包括{% extends "AcmeDemoBundle::layout.html.twig" %}
{% block content %}
<h1>Form values</h1>
{% if name is defined %}
<p>Name: {{ name }} </p>
{% endif %}
<form method="post" action="{{ path('_form1') }}">
<label for="name">Name:</label>
<input type="text" id="name" name="name" /><br>
<input type="submit" name="submit" value="Submit" />
</form>
{% endblock %}
)包括:WelcomeController
form1Action
use Symfony\Component\HttpFoundation\Request;
// ... other code ...
public function form1Action(Request $request)
{
$name = 'Not submitted yet';
if ($request->isMethod('POST') && $request->request->has('submit')) {
$name = $request->request->get('name');
}
return $this->render('AcmeDemoBundle:Welcome:form1.html.twig', ['name' => $name]);
}
>
routing.yml
方法。src/Acme/DemoBundle/Resources/config
>
_form1:
path: /form1
defaults: { _controller: AcmeDemoBundle:Welcome:form1 }
/form1
form1Action
>
src/Acme/DemoBundle/Form
){% extends "AcmeDemoBundle::layout.html.twig" %}
{% block content %}
<h1>Form values</h1>
{% if name is defined %}
<p>Name: {{ name }} </p>
{% endif %}
<form method="post" action="{{ path('_form1') }}">
<label for="name">Name:</label>
<input type="text" id="name" name="name" /><br>
<input type="submit" name="submit" value="Submit" />
</form>
{% endblock %}
use Symfony\Component\HttpFoundation\Request;
// ... other code ...
public function form1Action(Request $request)
{
$name = 'Not submitted yet';
if ($request->isMethod('POST') && $request->request->has('submit')) {
$name = $request->request->get('name');
}
return $this->render('AcmeDemoBundle:Welcome:form1.html.twig', ['name' => $name]);
}
_form1:
path: /form1
defaults: { _controller: AcmeDemoBundle:Welcome:form1 }
<?php
namespace Acme\DemoBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ArticleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title', 'text', ['label' => 'Title'])
->add('body', 'textarea')
->add('save', 'submit')
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(['data_class' => 'Acme\DemoBundle\Entity\Article']);
}
public function getName()
{
return 'article';
}
}
> routing.yml:
以上是Symfony 2中的建筑和处理形式的详细内容。更多信息请关注PHP中文网其他相关文章!