Laravel pluck()方法不起作用

时间:2017-08-07 12:46:27

标签: php laravel

我正在创建一个cms类型的应用程序。为此,在插入用户的角色即管理员,订阅者和作者时,我使用pluck()方法从角色表中检索数据并在选择下拉列表中显示角色作为数组,但问题是它无法正常工作[htmlspecialchars( )期望参数1是字符串,给定数组]请帮助我如何解决这个问题,或者有没有其他方法可以用来代替采摘?。

AdminPostsController:

public function create()
{
    $roles = Role::pluck('name', 'id')->all();

    return view('admin.users.create', compact('roles'));
}

创建页面(create.blade.php):

<div class = "form-group">
{!! Form::label('role_id', 'Role:') !!}
{!! Form::text('role_id', array(''=>'Choose Your Role')+$roles, null, 
['class'=>'form-control']) !!}
</div>

请帮忙!

2 个答案:

答案 0 :(得分:7)

您的问题不在pluck方法上,而是在您的刀片视图上:

<div class = "form-group">
{!! Form::label('role_id', 'Role:') !!}
{!! Form::text('role_id', array(''=>'Choose Your Role')+$roles, null, 
['class'=>'form-control']) !!}
</div>

Form::text方法需要一个字符串作为第二个参数,你给了一个数组。

如果您想要选择,请使用Form::select

答案 1 :(得分:1)

AdminController应如下所示:

public function create()
{
    $roles = Role::pluck('name', 'id')->toArray();

    return view('admin.users.create', compact('roles'));
}

并使用下面的刀片形式:

{!! Form::select('role_id', [null => 'Choose your role'] + $roles, null,
 ['class' => 'form-control']) !!}

您也可以通过将某些内容传递到Form :: select()的第3个位置来使用默认值。例如

{!! Form::select('INPUT_NAME', ['your' => 'array', 'with' => 'options], DEFAULT_VALUE, ['class' => 'example class',]]) !!}

Laravel Collective documentation.