【问题标题】:How to get different column values for one row如何为一行获取不同的列值
【发布时间】:2023-03-24 17:05:01
【问题描述】:

我在 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->brand}} 而不是 id 获取 input::old?

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

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

谢谢

【问题讨论】:

    标签: forms laravel


    【解决方案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(我会采用这种方法)

    【讨论】:

    • 我已经在考虑使用列表,但不知道该怎么做。我会尝试并让你知道。感谢您和 Nehal 到目前为止的帮助!!!!非常感谢
    • 对了,您介意解释一下使用 form::model 代替 form::open 和 Form::select 代替手动创建的优点吗?
    • 当然,当您使用 Form::model 时,您可以将您的对象作为第一个参数传递,并且表单内与您的对象属性名称相同的所有字段都将被自动填充。在您的编辑表单和东西中使用它很好。 Form::select 它只是一种更快的创建选择的方法,它会使用您传入第二个参数的 objt 自动填充您的选项,并自动选择您放入第三个参数的选项,无论您想要什么类或标签属性通过你可以把它放在你最后一个参数的可选数组中。我希望我回答了你的问题:)
    • 我试过你的解决方案,效果很好!我唯一想不通的是如何为选定的“请选择一个品牌”添加一个选项。有什么想法吗?
    • 我忘了补充请选择品牌应该是一个空值
    【解决方案2】:

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

    $request->flash()
    

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

    {{ old('brand') }}
    

    【讨论】:

    • old() 值被很好地填充,在这种情况下是 $brand->id 但我想重新填充为旧值,如下所示:old('brand->brand') .我知道这是不对的,但我不知道该怎么做。我之所以在选择选项中输入品牌-> id 是因为我得到了值,并且在我的控制器中我在表 Brands 中搜索了 id,然后我得到了其他属性,如价格等。也许你可以告诉我如何我可以在我的选项值中使用品牌->品牌并在品牌表中搜索该值吗?
    • 您的品牌专栏名称是什么?
    • 我的表是id |品牌 |品牌蛞蝓 |品牌价格。所以想法是用户在选择框中选择从数据库中填充的品牌,当表单在下一个视图中发送时,我会显示该品牌的价格。
    【解决方案3】:

    $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']) !!}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-24
      • 2019-10-11
      • 2021-03-31
      相关资源
      最近更新 更多