Laravel RESTful编辑屏幕,带有多个表格

时间:2014-12-08 12:27:08

标签: laravel blade

我有3个表用于存储业务详细信息。主表和电话号码表,作为企业可以附加任意数量的电话号码。

表1 - 商业清单 表2 - 商务电话号码 表3 - 如此处所示链接表1至表2

1   id                  int(11) No  None    AUTO_INCREMENT  
2   listings_id         int(11) No  None        
3   listingsphone_id    int(11) No  None        
4   created_at          timestamp           
5   updated_at          timestamp           

我的控制器从数据库中提取数据并将其传递给视图

public function edit($id)
{
    // get the listing
    $listing = DB::table('listings')
        ->where('listings.id', '=', $id)
        ->first();

    $listingphone = DB::table('listings')
        ->leftjoin('listings_listingsphone_rel', 'listings.id', '=', 'listings_listingsphone_rel.listings_id')
        ->leftjoin('listingsphone', 'listings_listingsphone_rel.listingsphone_id', '=', 'listingsphone.id')
        ->where('listings.id', '=', $id)
        ->get();

    // show the edit form and pass the listing
    return View::make('admin.listings.edit')
        ->with('listing', $listing)
        ->with('listingphone', $listingphone);
}

然后,Blade需要在表单中创建多个输入行以输出到屏幕,每行存在一行。

{{ Form::model($listing, array('route' => array('admin.listings.update', $listing->id), 'method' => 'PUT')) }}

<div class="form-group">
    {{ Form::label('listingname', 'Company Name') }}
    {{ Form::text('listingname', null, array('class' => 'form-control')) }}
</div>


@foreach($listingphone as $key => $value)
<div class="form-group">
    {{ Form::label('phone', 'Phone number') }}
    {{ Form::text('phone', null, array('class' => 'form-control')) }}
</div>
@endforeach

{{ Form::submit('Edit the Listing!', array('class' => 'btn btn-primary')) }}

{{ Form::close() }}

代码的问题是,它会为我生成多个具有相同名称和ID的输入行

<label for="phone">Phone</label>
<input class="form-control" name="phone" type="text" id="phone">

<label for="phone">Phone</label>
<input class="form-control" name="phone" type="text" id="phone">

我显然需要使用这样的代码(伪代码)将数据存储在控制器中: -

    // store
        $listing = Listing::find($id);
        $listing->listings_company        = Input::get('listings_company'); 

        $listing->save();


        // store
        $listingphone = ListingPhone::find($id);

        foreach ($listingphone as $key => $value)
        {
            $listingphone->listings_phone        = Input::get('phone['$key']'); 
            $listingphone->save();
        }

我应该如何在Blade /控制器中处理这种类型的设置?

1 个答案:

答案 0 :(得分:0)

我假设您拥有文本表单字段的问题与您拥有复选框时需要处理的问题相同。您有多个具有相同名称的字段,无论如何都需要引用。

为此,您需要在表单字段名称上使用括号。

您可以在此处看到与复选框相关的类似示例:

How to get the values for a series of checkboxes in Laravel 4 controller (if checked)