要预填充表单字段,我们可以在 create.blade.php 中的表单字段中添加“值”:
{{ Form::text('title', 'Some default title') }}
有没有办法在其他地方完成这项任务(可能在模型或控制器中?)。我想在创建和编辑视图中为表单字段提供相同的代码。谢谢!
要预填充表单字段,我们可以在 create.blade.php 中的表单字段中添加“值”:
{{ Form::text('title', 'Some default title') }}
有没有办法在其他地方完成这项任务(可能在模型或控制器中?)。我想在创建和编辑视图中为表单字段提供相同的代码。谢谢!
好的,我们到了……我在示例中使用了 Laravel 的表单模型绑定。(我使用用户模型/数据库表)。如果您不清楚该主题,请查看此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 的标题,如果$article
不等于false
您需要做的就是在刀片模板中包含一个条件。
假设您的数据库表有一个字段 myfield,您希望将其默认为 mydefault。
只需在创建和编辑视图调用的局部视图中包含以下内容:
@if(isset($myfield))
{{ Form::input('text','myfield') }}
@else
{{ Form::input('text','myfield','mydefault') }}
@endif
你不需要其他任何东西。
if you mean placeholder you can do this
{{ Form::password('password', array('placeholder' => 'password'))}}
可能更容易(Laravel 5):
{{ Form::text('title', isset($yourModel) ? null : 'Some default title') }}
那就是假设您将表单用作部分。如果表单的模型存在(您正在编辑或修补记录),它应该填充该值,否则它应该向您显示您希望的默认值。
当您使用模式构建器时(在迁移或其他地方):
Schema::create(
'posts', function($table) {
$table->string('title', 30)->default('New post');
}
);
如果您想有条件地执行此操作,解决此问题的另一种方法可能是执行检查。如果此检查通过,请设置默认值(如下面$nom
的示例所示)。否则,通过显式设置将其留空null
。
{{ Form::text('title', (isset($nom)) ? $nom : null) }}