2014-09-22 51 views
8

我目前正在學習Laravel,並發現它確實有用和有趣。Laravel表單方法VS傳統編碼

目前我正在製作一個簡單的在線申請表格。

什麼都做使用Laravel的語法類的東西最大的優點:

{{ Form::open(array('url' => 'foo/bar')) }} 

,而不是簡單:

<form action="foo/bar"> 

或者:

echo Form::text('username'); 

相反的:

<input type="text" name="username" /> 

Laravel的方式必須更好,我只是想知道爲什麼呢?

+1

我發現的一個極好的優點是,如果你做了類似'Redirect :: back() - > withInput();'的操作,它會重定向回你的表單並自動填充以前爲你輸入的值 – Jonathon 2014-09-22 08:39:16

+0

另外,你可以使用'{{Form :: model('foo')}}'[link](http://laravel.com/docs/html#form-model-binding)自動填充模型數據。 – Adimeus 2014-09-22 08:55:50

回答

7

使用內置的HTML輔助有很多好處:

  1. 使用Form::open添加CSRF保護輸入隱藏(默認)

  2. 使用表單元素(輸入/ textarea的等)和withInput對重定向方式讓您輕鬆填寫表格使用相同的數據幾乎沒有編碼

    如果使用Redirect::route('form'->withInput();和具有輸入 TE XT {{Form::text('username')}}它會自動設置輸入的值的舊數據 - 如果你想匹配與標籤的容易得多字段,你並不需要自己編寫它檢查它

  3. 另外:

    {{ Form::label('username', 'Enter username') }} 
    {{ Form::text('username') }} 
    

    它會生成以下代碼:

    <label for="username">Enter username</label> 
    <input name="username" type="text" id="username"> 
    

    所以你看ID將被自動創建

可能還有一些。然而,主要的缺點是你需要學習,如果你想將你的網站移動到其他的框架,它是不可移植的,但每個解決方案都有優點和缺點。

+0

所以 - > withInput對於當用戶忘記了一個必填字段併發送回表單並輸入所有其他填寫的數據時很有用? – imperium2335 2014-09-22 09:05:13

+0

@ imperium2335是的,如果您驗證用戶輸入(通常您會這樣做),某些字段丟失或格式錯誤,則您使用withInput重定向並且所有字段都將自動填充以前的值,而無需額外編碼 – 2014-09-22 09:08:10

+0

有沒有辦法獲得Laravel記住選擇選項的選項?我已經記住了其他類型的領域,但它似乎不適用於選擇。 – imperium2335 2014-09-22 18:59:44

4

有使用LaravelForm組成部分,但一個有用的優勢,如此多的優點是,當你只需要使用這樣的:

{{ Form::open(array('url' => 'foo/bar')) }} 

{{ Form::close() }} 

它會自動附加一個隱藏_token場這對於CSRF保護是非常有用的。否則你必須使用echo Form::token()或其他方式手動創建_token字段。另外,當您使用RESTful路由時,LaravelForm組件也會追加相應的隱藏_method字段。下面的註釋是從Laravel網站採取:

注:由於HTML表單只支持POST和GET,PUT和DELETE 方法會自動添加一個_method隱藏字段 到表單被欺騙。

還有其他的好處,如Form Model Binding,很容易和更多的生成表單元素(特別是select)。在documentation上閱讀更多關於Form

順便說一句,在Redirect::back()->withInput()不僅在使用Form組件deppend,如果使用這樣的事情,例如:

<input type='text' name='username' value='<?php echo Input::old('username') ?>' /> 

這將仍然工作,現場將在重定向與重新填充回投入。