Laravel:填充数据库中的下拉列表

时间:2018-04-23 15:17:11

标签: laravel eloquent

我是Laravel的新手。我有一个"未找到变量的问题"当我尝试从表中填充DropDown时:表名是Cats(类别),模型名称是" Cat"看起来像这样:

class Cat extends Model
{
     public function project() {

     return $this->hasMany('App\Project');
}


}

项目可以有1个类别。类别名称可以在多个项目中。我现在想要在我要插入新项目的表单中填充下拉列表:为此,

我做了一条路线:

Route::get('myform', 'HomeController@myform');

我在HomeController中创建了一个Function,我传递了(我确实这么认为)变量" $ cats"在我看来:

public function myform()
{
$cats = Cat::pluck('name', 'id');
return view('project-insert', get_defined_vars());
}

或其他版本:

public function myform()
{
$cats = Cat::pluck('name', 'id');
return view('project-insert',compact('cats'));
}

在我的视图中,我试图用以下内容打印出数据:

{!! Form::open() !!}
{!! Form::select('id', $cats, null, ['class' => 'form-control']) !!}
{!! Form::close() !!}

但是我得到了一个未找到的变量猫#34;错误。如何告诉视图获取变量" $ cats"?

我创建了一个新视图(myform.blade.php)并在那里尝试了相同的内容:

 <html>
 <body>

   {{ dd($cats) }}

   {!! Form::open() !!}

       {!! Form::select('id', $cats, null, ['class' => 'form-control']) !!}

   {!! Form::close() !!}

 </body>
</html>

和路线:

 Route::get('myform', 'HomeController@myform'); 

在我的Controller中链接到新视图:

 public function myform() { 
   $user = Auth::user(); 
   $cats = Cat::pluck('name', 'id'); 
   return view('myform', get_defined_vars()); 
 } 

现在:

 dd($cats) 

正在显示所需的结果......很奇怪,它正在使用新刀片,而不是旧刀片!

感谢您的帮助和建议!

的Stefan

2 个答案:

答案 0 :(得分:0)

尝试

return view('project-insert', ['cats' => $cats]);

compactget_defined_vars相同。 您可以尝试在{!! Form::open() !!}之前添加: {{ dd($cats }}

答案 1 :(得分:0)

我的错误。出现问题是因为

中的路线错误
<form method="POST" action="{{ route('project-insert') }}">

路线必须是:

Route::post('project-insert', 'ProjectController@insert')->name('project-insert');

而不是

Route::post('project-insert', 'ProjectController@insert');

抱歉令人困惑: - (

亲切的问候,

的Stefan