Forms 使用Laravel形成输入值

Forms 使用Laravel形成输入值,forms,laravel,Forms,Laravel,我想构建一个表单,用于输入新记录的数据以及编辑现有记录 如果我正在创建一个新记录或进行编辑,我如何定义表单输入的值属性?如果验证失败,它可以是空的,也可以是现有记录的值,或者是用户输入的输入 我当前的解决方案是将old()与我正在编辑的模型实例结合起来。例如,在编辑用户数据的表单中,用户名的输入元素的值类似于old('name',!empty($user)?$user->name:“”) 这是做这类事情的正确方法还是有更简单(更专业)的方法 我用的是Laravel5.2 提前感谢。您应该使用表单

我想构建一个表单,用于输入新记录的数据以及编辑现有记录

如果我正在创建一个新记录或进行编辑,我如何定义表单输入的
属性?如果验证失败,它可以是空的,也可以是现有记录的值,或者是用户输入的输入

我当前的解决方案是将
old()
与我正在编辑的模型实例结合起来。例如,在编辑用户数据的表单中,用户名的输入元素的值类似于
old('name',!empty($user)?$user->name:“”)

这是做这类事情的正确方法还是有更简单(更专业)的方法

我用的是Laravel5.2


提前感谢。

您应该使用表单模型绑定和partials。
首先创建3个文件-
create.blade.php
edit.blade.php
\u form.blade.php
。在
\u form.blade.php
中编写如下内容:

{!! Form::label('title', 'Title:') !!}
{!! Form::text('title', old('title')) !!}
create.blade.php

{!! Form::open(['route' => 'someroute']) !!}
@include('_form.blade.php')
{!! Form::submit('Create') !!}
{!! Form::close() !!}
{!! Form::model($model, ['route' => 'someroute']) !!}
@include('_form.blade.php')
{!! Form::submit('Save Changes') !!}
{!! Form::close() !!}
edit.blade.php

{!! Form::open(['route' => 'someroute']) !!}
@include('_form.blade.php')
{!! Form::submit('Create') !!}
{!! Form::close() !!}
{!! Form::model($model, ['route' => 'someroute']) !!}
@include('_form.blade.php')
{!! Form::submit('Save Changes') !!}
{!! Form::close() !!}
请在此处阅读更多信息:

解释性更新:

通过表单模型绑定,该模型拥有的所有属性都将放入表单字段。例如,我们的模型有
title
字段,所以如果我们像这样打开表单:
form::model($model)
并放置
form::text('title')
字段,它将由插件自动填充。

您应该使用表单模型绑定和部分。
首先创建3个文件-
create.blade.php
edit.blade.php
\u form.blade.php
。在
\u form.blade.php
中编写如下内容:

{!! Form::label('title', 'Title:') !!}
{!! Form::text('title', old('title')) !!}
create.blade.php

{!! Form::open(['route' => 'someroute']) !!}
@include('_form.blade.php')
{!! Form::submit('Create') !!}
{!! Form::close() !!}
{!! Form::model($model, ['route' => 'someroute']) !!}
@include('_form.blade.php')
{!! Form::submit('Save Changes') !!}
{!! Form::close() !!}
edit.blade.php

{!! Form::open(['route' => 'someroute']) !!}
@include('_form.blade.php')
{!! Form::submit('Create') !!}
{!! Form::close() !!}
{!! Form::model($model, ['route' => 'someroute']) !!}
@include('_form.blade.php')
{!! Form::submit('Save Changes') !!}
{!! Form::close() !!}
请在此处阅读更多信息:

解释性更新:

通过表单模型绑定,该模型拥有的所有属性都将放入表单字段。例如,我们的模型有
title
字段,所以如果我们像这样打开表单:
form::model($model)
并放入
form::text('title')
字段,它将由插件自动填充。

在Laravel 5中有一些用于处理更新表单的选项。为了保持我的视图更清晰,我更喜欢使用。它有很好的文档记录,提供了开箱即用的功能,可以处理默认值,而无需将逻辑添加到视图中。只需通过Composer(“laravelcollective/html”:“5.2.*)添加库,并将服务提供者和别名添加到
config/app.php
。HTML助手以前随Laravel4一起提供,但在Laravel5发布时被移到了一个外部库中


如果您希望避免额外的库,请提供一个带有预填充字段的更新表单的完整示例。

在Laravel 5中,有几个用于处理更新表单的选项。为了保持我的视图更清晰,我更喜欢使用。它有很好的文档记录,提供了开箱即用的功能,可以处理默认值,而无需将逻辑添加到视图中。只需通过Composer(“laravelcollective/html”:“5.2.*)添加库,并将服务提供者和别名添加到
config/app.php
。HTML助手以前随Laravel4一起提供,但在Laravel5发布时被移到了一个外部库中


如果您希望避免额外的库,请提供一个带有预填充字段的更新表单的完整示例。

对于表单和本地化,我在完成的每个项目中使用3个包:


干净、易于阅读和贡献。

通过表单和本地化,我在完成的每个项目中使用3个包:


干净、易于阅读和贡献。

或。。。不必每次都在视图中使用三元变量,只需允许在“编辑”视图中使用的同一变量可用于“创建”视图,然后将该变量指定给模型的空实例,该实例将允许对象的每个属性都具有空值。这将在控制器而不是视图中完成

因此,你可以只做:

public function create()
{
    $user = New User;
    return view('add_user')->with('user', $user);
}
因为编辑可能是这样的

public function edit($id)
{
    $user = User::find($id); (or auth session id or whatever)
    return view('edit_user')->with('user', $user);
}
这样你就可以:

old('name', $user->name) 

在默认值为$user->name的部分表单中,将在“创建”视图中显示为空字符串,并在“编辑”视图中显示实际数据。

或。。。不必每次都在视图中使用三元变量,只需允许在“编辑”视图中使用的同一变量可用于“创建”视图,然后将该变量指定给模型的空实例,该实例将允许对象的每个属性都具有空值。这将在控制器而不是视图中完成

因此,你可以只做:

public function create()
{
    $user = New User;
    return view('add_user')->with('user', $user);
}
因为编辑可能是这样的

public function edit($id)
{
    $user = User::find($id); (or auth session id or whatever)
    return view('edit_user')->with('user', $user);
}
这样你就可以:

old('name', $user->name) 
在默认值为$user->name的部分表单中,它将在创建视图中显示为空字符串,并在编辑视图中显示实际数据