laravel - Laravel 5.7 如何从我的控制器中填充表单::select
问题描述
我见过类似的问题和他们的答案,但到目前为止,他们都没有为我的案例工作。我想这个问题很简单,但我找不到解决方案,因为我尝试了几种方法来填充我的下拉列表无济于事。这是我的控制器:
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 不是数组(对于那个控制器/动作)
如果我将方法更改为:
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 文档 - 视图 - 将数据传递给视图 view()
Laravel 6.x 文档 - 数据库 - 查询生成器 - 检索结果 - 检索列值列表 pluck()
LaravelCollective 文档 - HTML 6.x - 下拉列表 Form::select()
推荐阅读
- azureservicebus - 是否可以在 Java 中设置 Azure 服务总线消息的用户属性?
- javascript - 如何找到相似的字符串元素
- python - Python 和 BigQuery 不适用于带有 Nones 的“重复”字段
- javascript - Ember.j - 在数据库中创建消息时如何更新聊天?(firebase 作为数据库)
- python - Python oneliner if 条件与多个语句用逗号和分号分隔
- python - How to load YAML file from Github?
- amazon-web-services - AWS“DX”和“FsX”的缩写含义
- c# - Unity 在线多人游戏错误:连接已被对等方关闭,尝试协商集合点超时
- javascript - Mapbox 彩色地图,多边形除外
- python - 如何在 Django 3.2 中进行多对一字段引用?