我是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
答案 0 :(得分:0)
尝试
return view('project-insert', ['cats' => $cats]);
但compact
和get_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