>本教程探討了在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中文網其他相關文章!