在Laravel表单中添加或删除项目

时间:2014-05-21 10:02:12

标签: forms laravel laravel-4 blade

我的表单会创建一个交付请求。基本上在该表单上,用户需要添加/删除项目及其数量。

这就是我构建表格的方式:

  • ID

  • ITEM_NAME

投放请求

  • ID

  • delivery_request_number

  • requested_by

投放-request_item

  • ID

  • delivery_request_id

  • ITEM_ID

  • item_quantity

例如,假设用户创建了一个递送请求。 并增加3台X-printer,2台Y-ink。

由于在'添加项'按钮上提交,因此会重新加载或重定向用户的浏览器。如何添加/删除所述项目,然后在保存时我会假设有类似的内容:

  • id = 1

  • item_name = X-printer

  • id = 2

  • item_name = Y-ink

投放请求

  • id = 001

  • delivery_request_number = 0001

  • requested_by = John Doe

投放-request_item

  • id = 1

  • delivery_request_id = 0001

  • item_id = 1

  • item_quantity = 3

  • id = 2

  • delivery_request_id = 0001

  • item_id = 2

  • item_quantity = 2

我对如何执行它一无所知。

//create.blade.php
{{Form::open(array('method'=>'POST','route'=>'delivery-requests.store'))}}  
  {{Form::text('Requested by', Auth::user()->email, array('disabled'=>'true'))}}

  <div>
    {{Form::label('Shows Items from table')}}   
    {{Form::select('items', $items)}}

    {{Form::label('Quantity')}}
    {{Form::text('item_quantity')}}

    {{Form::submit('add item',array('name'=>'addItem'))}}
  </div>

  <div>
    <table>
        <theader>
            <tr>
                <td>ITEM NAME</td>
                <td>QUANTITY</td>
                <td></td>
            </tr>
        </theader>
        <tbody>
                <!-- loop through the items -->
                <td> {{-- Item name --}}</td>
                <td> {{-- Quantity--}}</td>
                <td> {{Form::submit('remove item', array('name' => 'removeItem'))}} </td>
        </tbody>
    </table>
  </div>

  {{Form::submit('submit', array('name' => 'submit'))}}
{{Form::close()}}

现在我还没有完成 DeliveryRequestsController 的代码,因为我不确定如何继续。

// DeliveryRequestsController
public function store()
{
    if(Input::has('addItem'))
    {
        // see if itme is already added,
        // add the item and quantity

        return Redirect::to('delivery-requests/create');
    }
    elseif(Input::has('removeItem'))
    {
        // remove the item and quantity

        return Redirect::to('delivery-requests/create');
    }
    elseif(Input::has('submit'))
    {
        $input = Input::all();
        $delivery_request = new DeliveryRequest;
        $delivery_request-> = Input::get('requested_by');
        $delivery_request->save()

        // get all items and quantities, save it

        return Redirect::to('delivery-requests');
    }
    else
    {
        return 'something went wrong';
    }
    return Redirect::route('delivery-requests.index');
}

修改

从下面的屏幕截图中可以看出,我仍然需要重定向到同一页面,并显示添加的项目。

enter image description here

1 个答案:

答案 0 :(得分:0)

你很亲密。你确实有一些语法错误,但这应该适用于你,假设你使用与项目的id匹配的值填充你的选择..

$delivery_request = new DeliveryRequest();
$delivery_request->requested_by = Input::get('requested_by');
$delivery_request->save();

$delivery_request->items()->attach(Input::get('items'), array('quantity' => Input::get('item_quantity')));

如果我可以提出一个建议,我会将DeliveryRequest重命名为Cart,因为它在逻辑上更有意义。然后,您可以拥有Delivery,这可以由许多Cart个项目组成。