Php 定义Laravel表单字段的默认值

Php 定义Laravel表单字段的默认值,php,laravel,default-value,Php,Laravel,Default Value,要预填充表单字段,我们可以在create.blade.php中的表单字段中添加“value”: {{ Form::text('title', 'Some default title') }} 在其他地方(可能在模型或控制器中)是否有完成该任务的方法。我希望表单字段的代码在“创建和编辑”视图中相同。谢谢 如果你是指占位符,你可以这样做 {{ Form::password('password', array('placeholder' => 'password'))}} 是的,让我们考虑下

要预填充表单字段,我们可以在create.blade.php中的表单字段中添加“value”:

{{ Form::text('title', 'Some default title') }}

在其他地方(可能在模型或控制器中)是否有完成该任务的方法。我希望表单字段的代码在“创建和编辑”视图中相同。谢谢

如果你是指占位符,你可以这样做

{{ Form::password('password', array('placeholder' => 'password'))}}

是的,让我们考虑下面的例子:

视图:

控制器:

$title = 'Some default title';
if($article) {
    $title = $article->title;
}
return View::make('user.login')->with('title', $title)

然后,如果
$article
不等于
false
,那么您将有一个带有
一些默认标题的文本输入,或者$article中的标题,好的,现在我们来看一下。。。我在示例中使用了Laravel的表单模型绑定。(我使用用户模型/db表)。
如果你不清楚这个话题,请看一下这个

这里是控制器提供的视图文件

// 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>
//视图文件-我认为是自描述的
文件
@如果(!$user->id)
{{Form::model($user,['route'=>'admin.users.store'])}
@否则
{{Form::model($user,['route'=>['admin.users.update',$user->id],'method'=>'put'])}}
@恩迪夫
{{Form::text('firstName')}
{{Form::text('lastName')}
{{Form::submit()}}
{{Form::close()}}

在迁移或其他地方使用架构生成器时:


您只需在刀片模板中包含一个条件

假设数据库表中有一个字段myfield,您希望将其默认为mydefault

只需在“创建和编辑视图”调用的局部视图中包含以下内容:

@if(isset($myfield))
{{ Form::input('text','myfield') }}
@else
{{ Form::input('text','myfield','mydefault') }}
@endif
你不必做任何其他事情。

可能更容易(Laravel 5):


也就是说,假设您将表单用作部分。如果表单的模型存在(您正在编辑或修补记录),它应该填充值,否则它应该显示您希望的默认值。

如果您希望有条件地执行此操作,解决此问题的另一种方法可能是执行检查。如果该检查通过,则设置默认值(下面以
$nom
为例)。否则,通过显式地将其设置为
null
将其保留为空

{{ Form::text('title', (isset($nom)) ? $nom : null) }}

为什么不将表单代码放在单独的部分视图中,然后将其包含在创建和编辑视图中呢?嗨,Andreyco!我打算用if语句尝试表单字段的-section或variable(如果模式为create,则使用默认值,如果模式为edit,则使用null)。我还想在其他地方设置它,例如:为新项目设置类别(与“当前”类别相同)。您可能希望了解使用ViewModel的“模式”。一个解释是:请阅读这个概念,不要试图在您的Laravel项目中使用FuelPHP。以Zend.fideloper为例,感谢您提供链接。我承认很多事情都是有效的,我不明白为什么。我是新来的,但我也可以责怪隐藏复杂性的“魔力”,同时也责怪对理解很重要的事情。:)谢谢,玛哈米,这不是占位符的问题。谢谢,维克多!在视图中添加$title变量,然后添加'with'部分:->with('title',一些默认的TTE')有效。如果我有相同的视图代码进行编辑,它会抱怨缺少title变量,所以我添加:->with('title',null),不知何故,当我选择Andreyco的答案时,这被取消选择为接受答案。两者都为我的“有办法”问题提供了有用的答案:)谢谢大家!一个视图文件比我想尝试的(两个视图文件和一个常见的formfields文件:)要好得多,更易于维护;伟大的谢谢我需要的唯一改变是在if语句--> if(.ISSET($USS-ID))中,它适用于数据库默认值,它不会改变模型或其他模块中的任何内容。在只允许代码的情况下,请考虑编辑您的答案以包含描述。这有助于答案适用于更多情况,并帮助其他人学习。
Schema::create( 
      'posts', function($table) {
          $table->string('title', 30)->default('New post'); 
      }
);
@if(isset($myfield))
{{ Form::input('text','myfield') }}
@else
{{ Form::input('text','myfield','mydefault') }}
@endif
{{ Form::text('title', isset($yourModel) ? null : 'Some default title') }}
{{ Form::text('title', (isset($nom)) ? $nom : null) }}