Определение значений по умолчанию для полей формы 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::text('title', $title) }}

Если вы имеете в виду заполнителя, вы можете сделать это

{{ 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'); 
      }
);