Pour pré-renseigner un champ de formulaire, nous pouvons ajouter une «valeur» à celui-ci dans create.blade.php:
{{ Form::text('title', 'Some default title') }}
Y at-il un moyen de faire cette tâche ailleurs (peut-être dans le modèle ou le contrôleur?). J'aimerais que le code des champs de formulaire soit identique dans la vue Créer et modifier. Merci!
Ok, alors nous y sommes ... J'ai utilisé la liaison de modèle de formulaire de Laravel dans l'exemple. (Je travaille avec le modèle utilisateur/la table des bases de données.) Si ce sujet n’est pas clair pour vous, jetez un coup d’œil à ceci 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());
}
...
}
Et voici le fichier de vue servi par le contrôleur.
// 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>
Oui, considérons l'exemple suivant:
Vue:
{{ Form::text('title', $title) }}
Manette:
$title = 'Some default title';
if($article) {
$title = $article->title;
}
return View::make('user.login')->with('title', $title)
Ensuite, vous aurez une entrée de texte avec Some default title
ou le titre de $ article, si $article
n'est pas égal à false
Tout ce que vous avez à faire est d'inclure une condition dans votre modèle de lame.
Supposons que votre table de base de données possède un champ myfield, que vous souhaitez définir par défaut sur mydefault.
Incluez simplement les éléments suivants dans une vue partielle appelée par les vues créer et modifier:
@if(isset($myfield))
{{ Form::input('text','myfield') }}
@else
{{ Form::input('text','myfield','mydefault') }}
@endif
Vous n'avez rien d'autre à faire.
si vous voulez dire un espace réservé, vous pouvez le faire
{{ Form::password('password', array('placeholder' => 'password'))}}
Probablement plus facile (Laravel 5):
{{ Form::text('title', isset($yourModel) ? null : 'Some default title') }}
Cela suppose que vous utilisez le formulaire en tant que partiel. Si le modèle du formulaire existe (vous modifiez ou modifiez un enregistrement), il doit renseigner la valeur. Sinon, il devrait vous indiquer la valeur par défaut que vous souhaitez.
Lorsque vous utilisez le générateur de schéma (dans Migrations ou ailleurs):
Schema::create(
'posts', function($table) {
$table->string('title', 30)->default('New post');
}
);