我正在Laravel工作。我有一个刀片视图页面,其中创建了多个表单(同一模型)。现在,我想要的是,当我点击提交按钮时,所有表单的数组应该返回给控制器。但是,它只返回一种形式的数据而不是数组。我怎样才能做到这一点,任何人都可以帮助我?从多个表单获取数据Laravel
回答
你可以做的是你需要将命名结构的表单字段循环为first_name1,first_name2等等。然后,在提交表单之后,您可以使用循环以相同的方式进行验证并获取值。你可以在这里查看我的示例代码。它计算要创建的循环数。
您可以将视图中的计数器传递给隐藏域中的控制器。然后,您可以循环进行验证并获取输入。
检查我的样本代码:
//determine number of rows in database
$number_of_loop = Input::get('number_of_loop');
$arrayList = []; //defining the array variable
//declaring the validations rules
for($i = 1; $i < $number_of_loop; $i++){
$rules = array(
'currency'.$i => 'required',
'iso_code'.$i => 'required',
'symbol'.$i => 'required',
'status'.$i => 'required'
);
$validator = Validator::make(Input::all(), $rules);
if($validator->fails()){
return Redirect::back()->withErrors($validator)->withInput();
}
}
for ($i=1; $i <= $number_of_loop; $i++) {
$new_currency = new stdClass();
$currency = Input::get('currency' . $i);
$iso_code = Input::get('iso_code'.$i);
$symbol = Input::get('symbol'.$i);
$conversion_rate = Input::get('conversion_rate'.$i);
$status = Input::get('status'.$i);
$new_currency->currency = $currency;
$new_currency->iso_code = $iso_code;
$new_currency->symbol = $symbol;
$new_currency->conversion_rate = $conversion_rate;
$new_currency->enable = $status;
array_push($arrayList, $new_currency);
}
UPDATE1
存储所有的记录,创建一个数组和一个新的stdClass的。将所有变量存储在stdclass属性中。最后,将新的stdclass推送到数组中。然后,您可以访问表单的所有输入。检查以上更新的代码示例
感谢您的代码。但这不适用于我的情况。如果我这样做,我从多个数据中只获得最后一个表格的数据。 –
您需要在每个循环中保存数据。否则,只会从最后一个循环获取值。首先保存每个循环中的记录并从数据库访问。 – vijayrana
抱歉,我无法更好地解释它。假设,当我运行循环时,说4次,每次迭代都有最后一种形式的数据。我用回声测试了它。 –
这不是一个真正的Laravel问题。
诀窍是每个提交按钮使用不同的形式。然后,这很简单。检查提交的按钮。
if ($request->isMethod('post')) {
if ($request->has('submit_button_form_1')) {
// Handle form
}
elseif ($request->has('submit_button_form_2')) {
// Handle form
}
elseif ($request->has('submit_button_form_3')) {
// Handle form
}
}
感谢@Schellingerht的代码。但是,我已经把所有这些多种形式都放在一个单一的表格中。现在你可以说,所有的形式都是这种单一形式的孩子。 –
子表单不是有效的html。另见http://stackoverflow.com/questions/379610/can-you-nest-html-forms。分离更好,所以你可以处理不同的形式。 – schellingerht
首先,我不认为你可以发送多种形式,这只是它的方式。 你有两种选择。
第一:用所有形式的所有字段创建一个表单,然后在控制器中,您只需要输入你想要的字段,就像你从数组中做同样的事情一样。 像:
$all_fields= Request::all();
and then
$all_fields['something'], $all_fields['something_else'],
二:使用Ajax,您可以处理和发送领域,你需要字段的值。
感谢@MasterSith。但是我不能只将所有的字段放在一个表单中,因为这些多个表单是通过点击按钮动态生成的。当用户想要插入更多的数据时,他只需点击按钮,并在已有的数据下添加新的表单。然后在提交父窗体单击时,我想将所有子窗体的数据作为数组返回。但我明白你的意思,我们不能发送多个表格。感谢那。我会尝试一些其他方式。 –
然后使用ajax,它会从输入中获取值并将它们发送给控制器,你可以创建数组,或者你喜欢什么。 – MasterSith
如果您使用的是Laravel 5.2,那么您可以验证阵列数据。您需要将所有输入内容放在一个表单中,因为您无法发送多个表单。如果每个表单具有action
属性的不同网址,那么这将如何工作?
要发送的数据作为一个数组,可以用[]
后缀name
属性:
{!! Form::open() !!}
{!! Form::text('name[]') !!}
{!! Form::text('name[]') !!}
{!! Form::text('name[]') !!}
{!! Form::close() !!}
当这种形式被提交时,name
将具有三个元素的数组。
为了验证,在验证规则名称中使用通配符:
return [
'name.*' => 'required|max:255',
];
然后,您可以通过Request
对象访问名称的数组控制器:
$names = $request->get('names', []);
foreach ($names as $name) {
User::create(['name' => $name]);
}
我不因为你没有将它包含在你的问题中,所以知道你的数据结构,但这应该足以让你适用于你的情况。
- 1. 从另一个表Laravel获取数据
- 2. 从多个表获取数据SQLite
- 3. 从多个表MySql中获取数据?
- 4. SQL从多个表中获取数据
- 5. CakePHP从多个表中获取数据
- 6. 从多个表中获取数据
- 7. 从多个表中获取数据
- 8. SQL从多个表中获取数据
- 9. 从Laravel Collection获取数据
- 10. 表单和从表单获取数据
- 11. 获取laravel数据与表
- 12. 如何获取表单的多行数据控制器laravel 5.1
- 13. Laravel 4从数据库获取信息的下拉表单
- 14. 从多个表分为单列获取数据,而
- 15. 从数据库Laravel获取数据
- 16. 从多个数据库获取数据
- 17. Laravel DB查询连接多个表和获取条件数据
- 18. 无法使用多部分/表单数据从表单中获取数据
- 19. 从Busboy获取表单数组数据
- 20. 存储数据从单一形式laravel多个表
- 21. 如何从laravel中的多个表中提取数据
- 22. Laravel从3个表中获取相关数据
- 23. 从laravel中的数据透视表中获取数据
- 24. Laravel 4 - 从数据透视表中获取数据
- 25. 如何从数据集中的多个表中获取数据?
- 26. 使用PHP从多个数据库表中获取数据
- 27. 在多个表上使用多个查询从多个表中获取数据
- 28. Laravel - 从多对多表中获取计数
- 29. 从多维数组获取单个值
- 30. PHP - 获取表单数据是从
你不能发送多个表单aaik,你不能只是合并所有的领域? –
我如何合并它们? –
只需将所有字段放在相同的'
'标签中......如果您想要某种分离(逻辑,语义等),您可以通过'