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()
LaravelCollective Docs - HTML 6.x - Drop-Down Lists Form::select()
我看过类似的问题及其答案,但到目前为止,其中 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()
LaravelCollective Docs - HTML 6.x - Drop-Down Lists Form::select()