我正在尝试构建一个计时器应用程序 - 这个表单应该提交时间(它确实)和从数据库填充的客户端名称,它看起来像这样:
{{ Form::open(array('action' => 'TasksController@store', 'name' => 'timer')) }}
{{ Form::select('client', $client , Input::old('client')) }}
{{ Form::hidden('duration', '', array('id' => 'val', 'name' => 'duration')) }}
{{ Form::submit('Submit', array('class' => 'btn btn-primary')) }}
{{ Form::close() }}
生成此页面的控制器如下所示:
public function index()
{
$client = DB::table('clients')->orderBy('name', 'asc')->lists('name','id');
return View::make('tasks.index', compact('task', 'client'));
}
我得到一个"未定义的变量:client"当我提交表格时。我不明白为什么。
我做错了什么?
编辑:我的TasksController中的商店功能如下所示:
public function store()
{
$input = Input::all();
$v = Validator::make($input, Task::$rules);
if($v->passes())
{
$this->task->create($input);
return View::make('tasks.index');
}
return View::make('tasks.index')
->withInput()
->withErrors($v)
->with('message', 'There were validation errors.');
}
答案 0 :(得分:2)
您将从View::make()
函数返回store()
,这不是“足智多谋”的方式。
您的观点期望包含$client
- 但由于store()
未返回$client
,因此会生成错误。
假设您使用的是资源丰富的控制器 - 您的商店功能应如下所示:
public function store()
{
$input = Input::all();
$v = Validator::make($input, Task::$rules);
if($v->passes())
{
$this->task->create($input);
return Redirect::route('tasks.index'); // Let the index() function handle the view generation
}
return Redirect::back() // Return back to where you came from and let that method handle the view generation
->withInput()
->withErrors($v)
->with('message', 'There were validation errors.');
}