繁体   English   中英

Laravel如何从数据库中填充选择框

[英]Laravel how to populate select box from database

我有一个存储国家列表的数据库表,现在我试图以下拉形式获取国家列表,但是不工作,也许我错过了什么。这是我的控制器代码

` public function details($id){
        //fetch post data
        //$post = Post::find($id);

        $country_options = Country::pluck('country', 'id');
        $country_options = DB::table('regions')->orderBy('country', 'asc')->pluck('country','id');

        //pass posts data to view and load list view
        return view('dashboard')->with('country_options',$country_options);

    }`

并且在我的表单中回显下拉列表的代码看起来像这样`

@foreach($countries as $country)'+
               '<option value="{{ $country->id }}"> {{ $country->country }}</option>'+
               '@endforeach'+`

我的路线看起来像这样

Route::get('/Business', 'BusinessController@details')->name('Business');

但我不断收到此错误消息

Undefined variable: countries (View: C:\xampp\htdocs

已经做了研究,但无法解决问题。 任何帮助将通过适当的文档/解释感谢。谢谢

您的错误是您将一个变量名称传递给您的视图并尝试使用其他名称进行读取。 我为你做了一些简单的例子。 这里我的表是“Pais”(葡萄牙语中的“Country”),并使用clorure路由作为回调函数。 (Lavarel 5.4)

路线(web.php):

Route::get('/test', function () {
    $countries = \App\Pais::all();
    return view('test_stackoverflow')->with(['countries' => $countries]);
});

查看(test_stachoverflow.blade.php):

<select name="countries" id="countries">
  @foreach($countries as $country )
    <option value="{{ $country->id }}">{{ $country->name }}</option>
  @endforeach
</select>

结果


另一个选择,如果你想继续使用pluck方法:

路线(web.php):

Route::get('/test', function () {
  /* $countries = \App\Pais::pluck('name','id'); */
  // or
  $countries = DB::table('pais')->pluck('name','id');
  return view('test_stackoverflow')->with(['countries' => $countries]);
});

查看(test_stachoverflow.blade.php):

  <select name="countries" id="countries">
    @foreach($countries as $id => $country )
      <option value="{{ $id }}">{{ $country }}</option>
    @endforeach
  </select>

两种解决方案在生成的HTML中都具有相同的结果。

希望这可以帮到你! 最好的祝福。

您从控制器而不是countries地区传递country_options

尝试这个

@foreach($country_options as $country)
    <option value="{{ $country->id }}">
        {{ $country->country }}
    </option>
@endforeach

首先,如果你想要所有类别,你不需要$ id

将控制器代码与:

public function details(){
    $country_options = Country::All();
    return view('dashboard',compact('countries'));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM