我在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。
我希望你得到我想要达到的目标。
由于
答案 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;])!!}