在Laravel 5中更新/保存职位

时间:2015-04-11 13:38:12

标签: laravel laravel-5

我跟着我的 question对我的工作岗位做了同样的事情,但是当我点击更新按钮时,我得到一个空白视图(空白浏览器)。

La控制器:

public function edit($id)
    {
        $job = Job::whereId($id)->firstOrFail();

        return view('jobs.edit')->withJob($job);
    }



public function update($id)
    {
        $job = Job::whereId($id)->firstOrFail();
        $job->fill(Input::all());
        $job->save();

        flash('You have successfully edited your Job Post');

        return redirect('/jobs' . $id);
    }

视图(编辑):

{!! Form::model($job, array('method' => 'PATCH', 'route' =>array('jobs.update', $job->id))) !!}

        <div class="form-group">
            {!! Form::label('job_title', 'Title') !!}
            {!! Form::text('job_title', null, array('class' => 'form-control')) !!}
        </div>

        <div class="form-group">
            {!! Form::label('job_description', 'Description') !!}
            {!! Form::text('job_description', null, array('class' => 'form-control')) !!}
        </div>



        {!! Form::submit('Update Job Post!', array('class' => 'btn btn-primary')) !!}

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

路线:

Route::resource('jobs', 'JobsController');

额外的第三只眼睛和清晰的大脑将有助于我的编辑不起作用的原因。感谢。

3 个答案:

答案 0 :(得分:1)

只需将更新功能更改为以下内容 -

  public function update($id)
{
    $job =  \App\User::whereId($id)->firstOrFail();
    $job->fill(\Input::all());
    $job->save();

    flash('You have successfully edited your Job Post');

    return redirect('/');
}

希望它能正常工作

答案 1 :(得分:0)

奇怪的是,我的应用中的部分内容很少,我必须使用\Input而其他部分只使用Input。对于这种情况,这解决了答案:$job->fill(\Input::all());

答案 2 :(得分:0)

你自己提供的答案是正确的,但为了明确未来读者的观点,我将回答关于原因的问题。

任何具有命名空间的类都要求您通过其命名空间访问外观,这只是\。因此,如果您的类(例如控制器或模型)以<? namespace Acme\Boxes;开头,则所有外观引用也需要命名空间,例如\Input::get()

但是,如果您不在命名空间类(例如视图)中,则不需要使用门户网站的命名空间版本。但是尽量不要用外墙乱丢你的意见。

最后,如果你真的不喜欢到处都有\Input\Config,你可以在课程顶部添加一个use语句。如

use \Input as Input;
use \Config as Config;

// ... somewhere else in this class ...//
Input::get('bla');