我正在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,你不能只是合併所有的領域? –
我如何合併它們? –
只需將所有字段放在相同的'
'標籤中......如果您想要某種分離(邏輯,語義等),您可以通過'