在開發Laravel 應用程式的時候,通常都會涉及表單的處理,針對如何優雅處理和重複使用Laravel 的Form 表單,以下是小小的人生經驗:
使用Form Package
雖然寫原生的HTML 程式碼可讀性確實高了,但其實Form Package 還是會帶給我們很多的便利,例如在使用Form::model()和Form::select() 的時候。
想像這樣一個例子:我們需要新增或更新使用者的使用者名稱
我們可以設計類似這樣的程式碼和目錄結構:
// 位于 resources/views/users/edit.blade.php {!! Form::model($user, ['route' => ['users.update', $user->id], 'method' => 'put']) !!} @include('users._form') // Your cancel / update buttons {!! Form::close() !!} // 位于 resources/views/users/_form.blade.php <div class="form-group"> {!! Form::label('name', 'Name') !!} {!! Form::text('name') !!} </div>
上面的Form 產生的HTML程式碼大概是這個樣子:
<form method="POST" action="http://example.com/users/1" accept-charset="UTF-8"> <input name="_token" type="hidden" value="Q5oILhAr92pVqfE0ZSSXjSdJuUi09DVSPWweHQlq"> <input name="_method" type="hidden" value="PUT"> <div class="form-group"> <label for="name">Name</label> <input name="name" type="text" value="Michael"> </div> </form>
注意在Form::model() 方法中,我們之間傳遞了$user 變量,這也就是說:如果$user 存在name 屬性的值,表單就會自動填入該值,都不用我們手動寫入。
第二點就是,既然我們要傳遞$user 到Form::model() 中,我們可以在控制器中使用這樣的小技巧:
class UserController extends Controller { public function create() { return view('users.create', ['user' => new User]); } public function edit(User $user) { return view('users.edit', ['user' => $user]); } }
這樣的話,你在編輯新增的時候都不會有衝突,編輯更新的時候有name 的值,新增的時候就不用有name 的值。所以我們可以把整個 Form 表單寫成類似下面這個:
// 位于 resources/views/users/_form.blade.php <div class="form-group"> <label for="name">Name</label> <input type="text" name="name" value="{{ old('name', $user->name) }}" class="form-control"> </div>
這樣就大功告成啦!
最後
還是那句話:在表單處理的時候還是可以考慮一下Form Package ,特別是你在處理
更多Laravel相關技術文章,請造訪Laravel框架入門教學專欄進行學習!
以上是在 Laravel 中優雅處理 Form 表單的詳細內容。更多資訊請關注PHP中文網其他相關文章!