2013-07-01 6 views
0

это var_dump ($ _ POST):Laravel 4 отправки формы с множественным входом

array(18) { ["_token"]=> string(40) "Qg0krYddkI2cnPQBy5T3yGJdQqRBbb9q173MXzoa" ["from_name"]=> string(2) "4r" ["from_address"]=> string(1) "4" ["invoice_id"]=> string(1) "4" ["invoice_date"]=> string(0) "" ["due_date"]=> string(0) "" ["to_name"]=> string(1) "4" ["to_address"]=> string(1) "4" ["item"]=> array(1) { [0]=> string(5) "Hours" } ["desc"]=> array(1) { [0]=> string(2) "44" } ["​unitAmt"]=> array(1) { [0]=> string(1) "4" } ["​qty"]=> array(1) { [0]=> string(1) "4" } ["​amount"]=> array(1) { [0]=> string(2) "16" } ["invoiceNotes"]=> string(2) "44" ["subTotal"]=> string(2) "16" ["total"]=> string(2) "16" ["amtPaid"]=> string(1) "0" ["balDue"]=> string(2) "16" } 

Как вы можете видеть, переменная unitAmt в настоящее время размещены, но я получаю эту ошибку, когда я использую его:

ErrorException 
Undefined index: unitAmt 
open: /var/www/lk/htdocs/app/routes.php 
//var_dump($rows); 
//var_dump($description); 


for($i=0; $i<count($rows);$i++){ 
    DB::table('item_description')->insert(
    array('invoice_id' => $returnID, 'item' => $rows[$i], 'description' => $description[$i], 
    'unit_price' => $_POST['unitAmt'][$i], 'quantity' => $_POST['​qty'][$i], 'amount'=>$_POST['​amount'][$i])); 
    } 

Это работает отлично за количество и сумму, которые размещаются аналогичным образом. То же самое происходит и в других местах при сбросе переменной, я вижу, что данные есть, но когда я использую ее, отображается неопределенный индекс.

Edit: Это мой код в route.php

var_dump($_POST); 

$rows = $_POST['item']; 
$description = $_POST['desc']; 


for($i=0; $i<count($rows);$i++){ 
    DB::table('item_description')->insert(
    array('invoice_id' => $returnID, 'item' => $rows[$i], 'description' => $description[$i], 
    'unit_price' => $_POST['unitAmt'][$i], 'quantity' => $_POST['​qty'][$i], 'amount'=>$_POST['​amount'][$i])); 
    } 
+0

проверки этих трех полей, ваши var_dump шоу? в имени ключа, поэтому он не совпадает с $ _post ['unitAmt'] ..... ["? unitAmt"] => array (1) {[0] => строка (1) "4"} \t \t \t ["? Qty"] => массив (1) {[0] => строка (1) "4"} \t \t \t ["? Amount"] => массив (1) {[0] => string (2) «16»} – Shridhar

+0

не понял, что вы написали. –

+0

проверьте, почему «вопросительный знак» появляется перед полями unitAmt, qty и amount в вашем var_dump. Ошибка undefined index unit. Вы получаете из-за ключа массива «? UnitAmt». – Shridhar

ответ

1

Почему вы используете Laravel использовать стандартные функции PHP? Такой код вставки не должен находиться в файле routes.php, он должен находиться в контроллере или закрытии. Вероятно, вы должны использовать модель Eloquent для создания элементов. Кроме того, вы можете использовать класс Input для извлечения данных, предоставляемых параметрами GET или POST.

0

Я рекомендую вам использовать Красноречивую модель вставить элемент данные, как таким образом, и также цикл через для всех элементов в результирующем наборе: -

Используйте входной класс, чтобы получить POST и GET переменные в Laravel образом

Input::get('invoice_id') 

method get() - возвращает POST и GET вары method e() - Преобразование HTML символов субъектов и определены в Laravel/helper.php

Используйте красноречивы, чтобы добавить новую строку я п дб в Laravel пути, как: -

item_description::create($arr); 

простой пример, который добавляет элемент в таблицу ITEM_DESCRIPTION более чистый способ Laravel: -

$arr = array(
    'invoice_id' => e(Input::get('invoice_id')), 
    'item' => e(Input::get('item')), 
    'description' => e(Input::get('desc')), 
    'unit_price' => e(Input::get('unitAmt')), 
    'quantity' => e(Input::get('qty')), 
    'amount' => e(Input::get('amount')), 
    ); 

    // Insert Data in table 
    $item_description= item_description::create($arr); 
Смежные вопросы