Laravel 5.7 如何从我的控制器填充 form::select

Laravel 5.7 how can I populate a form::select from my controller

我看过类似的问题及其答案,但到目前为止,其中 none 对我的案例有效。我想这个问题很简单,但我找不到解决方案,因为我尝试了几种方法来填充我的下拉列表,但都无济于事。 这是我的控制器:

    namespace MIS\Http\Controllers;

    use MIS\Http\Controllers\Controller;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\DB;
    use Illuminate\Support\Facades\View;
    use Response;

    class pagesController extends Controller
    {

       public function provinces()
       {
          $data = DB::table('provinces')->select('province_code', 'province_name_english')->get();
          return view('pages/provinces', 'data');
       }
    }

这是我的查看代码:

   <div class="content">
      {!! Form::open(['url' => '']) !!}
      <div class="title m-b-md">Address</div>
      {!! Form::select("provinceList", $data, "Siemreab", ['class' => 'form-control']) !!}
      <select id="districtList"></select><br />
      <select id="communeList"></select><br />
      <select id="villageList"></select><br />
      {!! Form::close() !!}
   </div>

这一直给我这样的错误: - array_merge(): 参数 #2 不是数组(对于 controller/action)

如果我将方法更改为:

return view('pages/provinces')->with('data', $data); 

我收到这个错误:

htmlspecialchars() 期望参数 1 为字符串,给定对象(视图:D:\web\app\MIS\resources\views\pages\provinces.blade.php)

仅提及到目前为止我测试过的两种不同方式。 我似乎无法让视图从控制器接收数组。

感谢任何帮助。

您可以调整控制器以传递具有更具描述性的名称和正确格式的数据 Form::select(...):

namespace MIS\Http\Controllers;

use Illuminate\Support\Facades\DB;

class pagesController extends Controller
{

   public function provinces()
   {
      // key by province_code
      $provinces = DB::table('provinces')
          ->pluck('province_name_english', 'province_code')
          ->toArray(); // if you want an array

      return view('pages.provinces', [
          'provinces' => $provinces,
          'default_province_code' => ...,
      ]);
   }
}

您的视图可以使用 $provinces 作为由 'province_code' 键入的列表:

<div class="content">
    {!! Form::open(['url' => 'somewhere']) !!}
    <div class="title m-b-md">Address</div>
    {!! Form::select("provinceList", $provinces, $default_province_code, ['class' => 'form-control']) !!}
    <select id="districtList"></select><br />
    <select id="communeList"></select><br />
    <select id="villageList"></select><br />
    {!! Form::close() !!}
</div>

Laravel 6.x Docs - Views - Passing Data to Views view()

Laravel 6.x Docs - Database - Query Builder - Retrieving Results - Retrieving A List Of Column Values pluck()

LaravelCollective Docs - HTML 6.x - Drop-Down Lists Form::select()