Laravel 5列出了htmlentities(),期望参数1为字符串

imp*_*335 3 php laravel laravel-5

我有以下内容:

\ App\Models\Finance\FinanceAccount :: lists('name','id')

在我的一个观点的顶部,但它一直给我错误:

htmlentities() expects parameter 1 to be string, array given (View: mysite\views\modals\add.blade.php)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?


这对于它是一个数组是有意义的,我把它放入一个选择中它现在正在工作:

<div class="form-group">
      {!!Form::label('Account')!!}
      {!!Form::select('account', \App\Models\Finance\FinanceAccount::getSelectOptions(), 1, ['class' => 'form-control'])!!}
  </div>
Run Code Online (Sandbox Code Playgroud)

有没有办法为视图设置命名空间,所以我不必一直键入完整的命名空间?

Mar*_*lln 8

lists给出一个数组,这不是你可以回应的东西{{ }}.implode如果要打印它的内容,您需要做的是循环或数组.

foreach

@foreach ($list as $item)
    {{ $item }}<br />
@endforeach
Run Code Online (Sandbox Code Playgroud)

implode

{{ implode(', ', $list) }}
Run Code Online (Sandbox Code Playgroud)

Form::select

{!! Form::select('foo', $list) !!}
Run Code Online (Sandbox Code Playgroud)

如果您不想在视图中使用命名空间(您永远不应该使用),请将控制器中的数据发送到视图文件.

如果你的控制器中有这个

public function foo() {
    $baz = \App\Models\Finance\FinanceAccount::getSelectOptions();

    return view('bar', compact('baz'));
}
Run Code Online (Sandbox Code Playgroud)

$baz然后,您的视图文件中就会显示该变量.所以你可以这样做:

{!! Form::select('foo', $baz) !!}
Run Code Online (Sandbox Code Playgroud)