如何为一行获取不同的列值

时间:2015-12-03 09:28:28

标签: forms laravel

我在laravel中有一个多步骤表单,我将会话变量从一个视图传递到另一个视图,一切正常。

这是我表格的一部分

<div class="panel-body">
            {!! Form::open(array('url' => '/post-quote')) !!}

                <div class="form-group">
                  {!! Form::Label('brand', 'Brand:') !!}
                  <select class="form-control" name="brand" id="brand">
                    <option value="{{Input::old('brand')}}" selected="selected">{{Input::old('brand', 'Please select a Brand')}}</option>
                    @foreach($brands as $brand)
                      <option value="{{$brand->id}}">{{$brand->brand}}</option>
                    @endforeach
                  </select>
                </div>  

这是我的控制器的一部分

public function quote()
{               
    $brands = Brand::orderBy('brand')->get();       
    return View::make('frontend.step1', compact('brands'));
}

我得到的问题是我在select中传递每个选项值的id,并且在验证之后,Input :: old填充了id值,并且它看起来不正确显示数字而不是品牌名称。

问题:无论如何使用{{$ brand-&gt;品牌}}而不是ID来输入:: old?

我的另一个选择是将每个选项的值作为品牌名称传递,但我不知道如何在控制器中获取输入的ID。

我希望你得到我想要达到的目标。

由于

3 个答案:

答案 0 :(得分:1)

您是否尝试将品牌作为阵列传递?喜欢,

$brands = Brand::orderBy('brand')->lists('brand','id');       
    return View::make('frontend.step1', compact('brands'));

然后在您的视图中,您可以使用Form :: select而不是手动创建选择。像这样:

{!! Form::select('brand',$brands, Input::old('brand'),['class' => 'form-control']) !!}

尝试一下,让我知道它是否有效,还有其他一些你可以尝试的东西,比如使用Form :: model而不是Form :: open(我会采用这种方法)

答案 1 :(得分:0)

你可以使用像这样的flash方法将数据传递给下一个用户请求

$request->flash()

然后使用全局旧辅助函数在刀片模板中检索它,它为您提供旧的输入数据

{{ old('brand') }}

答案 2 :(得分:0)

$ brands =品牌:: orderBy(&#39;品牌&#39;) - &gt;列表(&#39;品牌&#39;,&#39; id&#39;);
    返回View :: make(&#39; frontend.step1&#39;,compact(&#39; brands&#39;)); 然后在您的视图中,您可以使用Form :: select而不是手动创建选择。像这样:

{!! Form :: select(&#39;品牌&#39;,$品牌,输入::旧(&#39;品牌&#39;),[&#39; class&#39; =&gt;&#39; form-控制&#39;])!!}