0

我正在尝试构建一个计时器应用程序 - 此表单应提交时间(它确实如此)和从数据库填充的客户端名称,它看起来像这样:

{{ 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'));
}

当我提交表单时,我得到一个“未定义的变量:客户端”。我不明白为什么。

我究竟做错了什么?

编辑:我的 TasksController 中的 store 函数如下所示:

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.');
}
4

1 回答 1

2

您正在View::make()从您的store()函数返回,这不是“足智多谋”的方式。

您的视图期望已$client包含在其中 - 但因为store()不返回 a $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.');
}
于 2013-07-17T03:48:07.690 回答