【问题标题】:Laravel: Display data in DropDown from databaseLaravel:从数据库中的下拉列表中显示数据
【发布时间】:2018-08-16 13:32:08
【问题描述】:

我正在使用 Laravel 开发一个项目,并希望使用下拉列表并使用数据库中的数据填充它,请帮助。这是我使用的代码:

控制器:

 public function create()
 {
    $items = Income::pluck('name', 'id');
    return view ('IncomeExpense.create');
 }

查看:

 <div class="form-group">
     {{Form::label('', 'Category')}}
     {{Form::select('IncomeExpense',null, $items,['class'=>'form-control',
     'placeholder'=>'Choose category'])}}
 </div>

【问题讨论】:

  • 你使用的是哪个版本的 Laravel?
  • @IlGala,使用 5.6
  • 您的数据库查询是什么样的?向我们展示您的表结构示例以及您为将数据发送到视图所做的努力。
  • @Adam,我已经编辑了答案,请查看我正在尝试使用 pluck,但它显示传递给 Collective\Html\FormBuilder::select() 的参数 4 的错误必须是数组类型, null 给定,在 C:\xampp\htdocs\TestingTask\vendor\laravel\framework 中调用
  • 你仍然需要在 pluck() 之后链接 first()、findOrFail()、firstOrFail()、get()。

标签: php laravel laravel-5.6


【解决方案1】:

首先,

您的控制器有错误...请阅读eloquent official documentation 应该是:

public function create()
 {
    $items = Income::all();
    return view ('IncomeExpense.create', compact('items'));
 }

无论如何,您不应该使用表单构建器,我认为如果您使用像 Components & Slots 这样的原生刀片功能会更有用。如果我没记错的话,Form Builder 已从 Laravel 5.0 中删除,以便将框架注意力集中在后端...

听几个 Bootstrap 4 的例子:

香草

<form method="POST" action="{{ route('your-route') }}" aria-label="{{ __('My form') }}">
    @csrf

    <div class="form-group row">
        <label for="dropdown" class="col-sm-4 col-form-label text-md-right">{{ __('My dropdown') }}</label>

        <div class="col-md-12">
            <select class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="dropdown">
              @foreach($my_collection as $item)
              <option value="{{ $item->id }}">{{ $item->text }}</option>
              @endforeach
            </select>

            @if ($errors->has('dropdown'))
                <span class="invalid-feedback" role="alert">
                    <strong>{{ $errors->first('dropdown') }}</strong>
                </span>
            @endif
        </div>
    </div>

{{-- other fields --}}

组件

<!-- /resources/views/components/select.blade.php -->

{{ $label }}

<div class="col-md-{{ $column == null ? 12 : $column  }}">
    <select class="form-control{{ ' ' . $select_css }}{{ $error == null ? '' : ' is-invalid' }}" name="dropdown">
      @foreach($my_collection as $item)
      <option value="{{ $item->id }}">{{ $item->text }}</option>
      @endforeach
    </select>

    @if ($error != null)
        <span class="invalid-feedback" role="alert">
            <strong>{{ $error</strong>
        </span>
    @endif
</div>


<!-- /resources/views/my/form.blade.php -->

<form method="POST" action="{{ route('your-route') }}" aria-label="{{ __('My form') }}">
    @csrf

    <div class="form-group row">
        @component('components.select', ['select_css' => 'whatever', 'my_collection' => $my_collection])
        @slot('label')
        <label for="dropdown" class="col-sm-4 col-form-label text-md-right">{{ __('My dropdown') }}</label>
        @endslot
    </div>

{{-- other fields --}}

【讨论】:

    【解决方案2】:

    Mirasan - 您需要传递从数据库中检索到的信息的视图。

    $items = Income::pluck('name', 'id');
    return view ('IncomeExpense.create')->with(compact('items'));
    

    然后在您的刀片文件中,您将访问数组“items”(而不是 $items)。

    问候-

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 2020-01-22
      • 2018-10-03
      • 2018-04-07
      • 2017-10-23
      • 2013-06-16
      相关资源
      最近更新 更多