在開發 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> ????{!!?Form::label('name',?'Name')?!!} ????{!!?Form::text('name')?!!} </div>
上面的 Form 生成的 HTML 代碼大概是這個樣子:
注意在 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> ????<label>Name</label> ????<input>name)?}}"?class="form-control"> </div>
這樣就大功告成啦!
最后
還是那句話:在表單處理的時候還是可以考慮一下 Form Package ,特別是你在處理
更多Laravel相關技術文章,請訪問Form Package欄目進行學習!
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END