Define default values for Laravel form fields
Okay, so here we are... I used Laravel's form model binding in the example. (I work with User model/db table).If this topic is not clear for you, take a look at this http://laravel.com/docs/html#form-model-binding
// Controllerclass UsersController extends BaseController{ ... // Method to show 'create' form & initialize 'blank' user's object public function create() { $user = new User; return View::make('users.form', compact('user')); } // This method should store data sent form form (for new user) public function store() { print_r(Input::all()); } // Retrieve user's data from DB by given ID & show 'edit' form public function edit($id) { $user = User::find($id); return View::make('users.form', compact('user')); } // Here you should process form data for user that exists already. // Modify/convert some input data maybe, save it then... public function update($id) { $user = User::find($id); print_r($user->toArray()); } ...}
And here come the view file served by controller.
// The view file - self describing I think<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> @if(!$user->id) {{ Form::model($user, ['route' => 'admin.users.store']) }} @else {{ Form::model($user, ['route' => ['admin.users.update', $user->id], 'method' => 'put']) }} @endif {{ Form::text('firstName') }} {{ Form::text('lastName') }} {{ Form::submit() }} {{ Form::close() }}</body></html>
Yes, let's consider the following example:
View:
{{ Form::text('title', $title) }}
Controller:
$title = 'Some default title';if($article) { $title = $article->title;}return View::make('user.login')->with('title', $title)
Then you will have a text-input with either Some default title
or the title from $article, if $article
isn't equal to false
All you need to do is include a conditional in your blade template.
Lets assume your database table has a field myfield, which you want to default to mydefault.
Just include the following in a partial view which is called by the create and edit views:
@if(isset($myfield)){{ Form::input('text','myfield') }}@else{{ Form::input('text','myfield','mydefault') }}@endif
You don't have to anything else.