[043] Symfony4 表單入門 Part03

表單入門 Part02 部分, 表單是直接在 Controller 里的. 通常這樣的代碼是不優(yōu)雅的. 看起來(lái)也不是很專業(yè). 我們把表單創(chuàng)建單獨(dú)的用一個(gè) Class 來(lái)實(shí)現(xiàn). 這樣會(huì)比較美觀和方便維護(hù)與重用.

使用 symfony/make 包提供的輔助創(chuàng)建表單類指令 make:form 快速的創(chuàng)建一個(gè)表單類

$ bin/console make:form 

 The name of the form class (e.g. OrangeChefType):
 > UserType

 The name of Entity or fully qualified model class name that the new form will be bound to (empty for none):
 > User

 created: src/Form/UserType.php
           
  Success! 
           
 Next: Add fields to your form and start using it.

把創(chuàng)建好的表單類: UserType 進(jìn)行PHP代碼完善一下. 看起來(lái)像這樣:

<?php

namespace App\Form;

use App\Entity\User;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class UserType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('email', EmailType::class, ['empty_data' => ''])
            ->add('passwd', PasswordType::class, ['empty_data' => ''])
            ->add('name', TextType::class, ['empty_data' => ''])
            ->add('save', SubmitType::class)
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => User::class,
        ]);
    }
}

這樣, 在 Controller 中的代碼就會(huì)非常的簡(jiǎn)潔了. 修改成這樣:

// ... code
    public function signUp(Request $request)
    {
        $user = new User();
        
//        $formBuilder = $this->createFormBuilder($user);
//        $formBuilder->add('name', TextType::class, ['empty_data' => '']);
//        $formBuilder->add('email', EmailType::class, ['empty_data' => '']);
//        $formBuilder->add('passwd', PasswordType::class, ['empty_data' => '']);
//        $formBuilder->add('save', SubmitType::class);
//        $form = $formBuilder->getForm();

        $form = $this->createForm(UserType::class, $user);

        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
// ... code 

Form 的創(chuàng)建單獨(dú)轉(zhuǎn)成 Class 后. 和之前的功能實(shí)現(xiàn)是一樣的效果.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末歧胁,一起剝皮案震驚了整個(gè)濱河市褐耳,隨后出現(xiàn)的幾起案子枯途,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咖气,死亡現(xiàn)場(chǎng)離奇詭異区赵,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)珠漂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門晚缩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人媳危,你說(shuō)我怎么就攤上這事荞彼。” “怎么了待笑?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵鸣皂,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我暮蹂,道長(zhǎng)寞缝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任仰泻,我火速辦了婚禮荆陆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘集侯。我一直安慰自己被啼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布棠枉。 她就那樣靜靜地躺著浓体,像睡著了一般。 火紅的嫁衣襯著肌膚如雪术健。 梳的紋絲不亂的頭發(fā)上汹碱,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天,我揣著相機(jī)與錄音荞估,去河邊找鬼咳促。 笑死,一個(gè)胖子當(dāng)著我的面吹牛勘伺,可吹牛的內(nèi)容都是我干的跪腹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼飞醉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼冲茸!你這毒婦竟也來(lái)了屯阀?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤轴术,失蹤者是張志新(化名)和其女友劉穎难衰,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逗栽,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盖袭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了彼宠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鳄虱。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖凭峡,靈堂內(nèi)的尸體忽然破棺而出拙已,到底是詐尸還是另有隱情,我是刑警寧澤摧冀,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布倍踪,位于F島的核電站,受9級(jí)特大地震影響索昂,放射性物質(zhì)發(fā)生泄漏惭适。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一楼镐、第九天 我趴在偏房一處隱蔽的房頂上張望癞志。 院中可真熱鬧,春花似錦框产、人聲如沸凄杯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)戒突。三九已至,卻和暖如春描睦,著一層夾襖步出監(jiān)牢的瞬間膊存,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工忱叭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留隔崎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓韵丑,卻偏偏與公主長(zhǎng)得像爵卒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子撵彻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 這里繼續(xù)窺探 symfony/form 的用法, 來(lái)了解一下 Form 的 Validator.通常在項(xiàng)目開發(fā)中,...
    觀星漢閱讀 728評(píng)論 0 49
  • 【本文由“木易林”發(fā)布钓株,2017年02月07日】 目前項(xiàng)目实牡,使用了Lua腳本,至于使用Lua的好處不再贅述了轴合。于是...
    木易林1閱讀 536評(píng)論 0 0
  • 在上一個(gè)章節(jié)创坞,我們已經(jīng)創(chuàng)建了一個(gè)基礎(chǔ)的Blog程序。現(xiàn)在我們將使用一些Dajngo高級(jí)功能受葛,去實(shí)現(xiàn)一個(gè)完整的blo...
    金金剛狼閱讀 3,584評(píng)論 1 12
  • 要實(shí)現(xiàn)下圖所示的申請(qǐng)表單摆霉。其中: ? 學(xué)校名稱、聯(lián)系電話必填奔坟; ? 學(xué)校地址、聯(lián)系人搭盾、郵箱選填咳秉; ? ...
    學(xué)以致用123閱讀 877評(píng)論 3 6
  • 對(duì)象的創(chuàng)建與銷毀 Item 1: 使用static工廠方法,而不是構(gòu)造函數(shù)創(chuàng)建對(duì)象:僅僅是創(chuàng)建對(duì)象的方法鸯隅,并非Fa...
    孫小磊閱讀 1,981評(píng)論 0 3