gpt4 book ai didi

php - Laravel:填充表单同时仍然允许 Form::old()

转载 作者:可可西里 更新时间:2023-11-01 12:46:09 24 4
gpt4 key购买 nike

使用 Laravel 中的 Form 类制作的数据库数据填充表单的最佳方式是什么,同时如果有任何错误仍然让位于 Input::old() ?我好像没弄对。

我目前的设置看起来像这样

public function getSampleform() {
// Load database data here

return View::make('sampleform');
}

public function postSampleform() {
// Save to database again then redirect to success page

return Redirect::to('success');
}

我通常以这种方式在 View 中回显我的字段:

<?php echo Form::text('entry', Input::old('entry'), array('class' => 'form-select'); ?>

我做错了什么?

最佳答案

最好的方法是使用表单模型绑定(bind)(http://four.laravel.com/docs/html#form-model-binding):

使用现有模型或创建“空”模型类:

class NoTable extends Eloquent { 
protected $guarded = array();
}

找到你的模型或实例化你的空类并用数据填充它:

public function getSampleform() {
// Load database data here

$model = new NoTable;
$model->fill(['name' => 'antonio', 'amount' => 10]);

return View::make('sampleform')->with(compact('model'));
}

如果您要将表单与上面已有数据的表格一起使用,请按以下方式使用它:

public function getSampleform() {

// Locate the model and store it in a variable:
$model = User::find(1);

// Then you just pass it to your view:
return View::make('sampleform')->with(compact('model'));
}

要填充表单,请使用表单模型绑定(bind),这是 Blade 中的示例:

{{ Form::model($model, array('route' => array('sample.form')) ) }}
{{ Form::text('name') }}
{{ Form::text('amount') }}
{{ Form::close() }}

你甚至不必传递你的输入数据,因为 Laravel 会使用最先出现的来填充你的输入:

1 - Session Flash Data (Old Input)
2 - Explicitly Passed Value (wich may be null or not)
3 - Model Attribute Data

Laravel 也会使用 Form::open() 或 Form::model() 为你处理 csrf token 。

关于php - Laravel:填充表单同时仍然允许 Form::old(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17091271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com