Определение значений по умолчанию для полей формы Laravel
чтобы предварительно заполнить поле формы, мы можем добавить "значение" в поле формы в create.лезвие.на PHP:
{{ Form::text('title', 'Some default title') }}
есть ли способ выполнить эту задачу в другом месте (возможно, в модели или контроллере?). Я хотел бы иметь код для полей формы, идентичных в create & edit view. Спасибо!
6 ответов
хорошо, вот мы и пришли... Я использовал привязку модели формы Laravel в Примере. (Я работаю с таблицей User model/db). Если эта тема не ясна для вас, взгляните на это http://laravel.com/docs/html#form-model-binding
// Controller
class 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());
}
...
}
и здесь приходит файл представления, обслуживаемый контроллером.
// 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>
Если вы имеете в виду заполнителя, вы можете сделать это
{{ Form::password('password', array('placeholder' => 'password'))}}
все, что вам нужно сделать, это включить условие в шаблон Блейда.
предположим, что в таблице базы данных есть поле myfield, которое по умолчанию должно быть mydefault.
просто включите следующее В частичное представление, которое вызывается представлениями create и edit:
@if(isset($myfield))
{{ Form::input('text','myfield') }}
@else
{{ Form::input('text','myfield','mydefault') }}
@endif
вам не нужно ничего другого.
вероятно, проще (Laravel 5):
{{ Form::text('title', isset($yourModel) ? null : 'Some default title') }}
то есть предполагается, что вы используете форму как частичную. Он должен заполнить значение, если модель для формы существует (вы редактируете или исправляете запись), иначе он должен показать вам желаемое значение по умолчанию.
при использовании построителя схем (в миграция или где-то еще):
Schema::create(
'posts', function($table) {
$table->string('title', 30)->default('New post');
}
);