Чтобы предварительно заполнить поле формы, мы можем добавить «значение» в поле формы в файле create.blade.php:
{{ Form::text('title', 'Some default title') }}
Есть ли способ выполнить эту задачу в другом месте (возможно, в модели или контроллере?). Я бы хотел иметь код для полей формы, идентичный в представлении create & edit. Благодаря!
Хорошо, так вот мы … Я использовал привязку модели модели 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) }}
контроллер:
$title = 'Some default title'; if($article) { $title = $article->title; } return View::make('user.login')->with('title', $title)
Затем у вас будет текстовый ввод с каким-либо Some default title
или заголовком из статьи $, если $article
не равно false
Все, что вам нужно сделать, это включить условное выражение в шаблон вашего клинка.
Предположим, что в вашей таблице базы данных есть поле 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') }}
То есть предположить, что вы используете форму как частичную. Он должен заполнить значение, если модель для формы существует (вы редактируете или исправляете запись), иначе она должна показать вам по умолчанию.
если вы имеете в виду местозаполнитель, вы можете это сделать
{{ Form::password('password', array('placeholder' => 'password'))}}
Когда вы используете построитель схем (в Миграции или где-то еще):
Schema::create( 'posts', function($table) { $table->string('title', 30)->default('New post'); } );