错误:从空值创建默认对象(laravel)

时间:2019-06-19 08:24:23

标签: laravel

所以我只想简单地在Laravel中更新。

这是错误:

enter image description here

这是我的控制器

 public function update(Request $request, $id)
{
     $request->validate([
        'category_fam'=>'required',
        'student_name'=>'required',
        'parent_name'=>'required',
        'grade'=>'required',
        'phone'=>'required',
        'email'=>'required',
    ]);
    $contact                = contact::find($id);
    $contact->category_fam  = $request->get('category_fam');
    $contact->student_name  = $request->get('student_name');
    $contact->parent_name   = $request->get('parent_name');
    $contact->grade         = $request->get('grade');
    $contact->phone         = $request->get('phone');
    $contact->email         = $request->get('email');
    $contact->save();

    return redirect()->route('contact')->with('success','Contact updated successfully');
}

这是我的观点,上面的错误指向:

<form action="{{ route('contact.edit.update',$contact->id) }}" method="POST">
@csrf
@method('PATCH')
<div class="row">
    <div class="col-xs-12 col-sm-12 col-md-12">
        <div class="form-group form-box">
            <label for="category_fam">Category Family</label>
            <div class="radio">
              <label><input type="radio" name="category_fam" id="category_fam" value="Student" checked> Student</label>
            </div>
            <div class="radio">
              <label><input type="radio" name="category_fam" id="category_fam" value="Parent"> Parent</label>
            </div>
            <div class="radio">
              <label><input type="radio" name="category_fam" id="category_fam" value="Other"> Other</label>
            </div>
        </div>
    </div>

这是我的路线

Route::post('/contact/edit', 'WC\ContactController@update')->name('contact.edit.update');

那么如何解决呢?其他Controller工作正常,我遵循更新模式。

4 个答案:

答案 0 :(得分:0)

据我所知,您没有从请求中获取任何数据。在更新请求之前,您是否尝试过dd()?另外,在您的表单中,我注意到您在打开时使用“ POST”方法,但是在下面定义了“ PATCH”方法。还有一件事,在尝试保存表单之前,您是否在表单中输入了任何数据?

答案 1 :(得分:0)

根据您的表格,您的路线不正确。在表单中,您具有PATCH方法,因此路由必须为patch。最重要的是,您必须在路径定义中放入变量:

Route::patch('/contact/edit/{id}', 'WC\ContactController@update')->name('contact.edit.update');

答案 2 :(得分:0)

您可以做的两件事是,首先可以将路线更新为:

发帖

Route::post('/contact/edit', 'WC\ContactController@update')->name('contact.edit.update');

要修补

Route::patch('/contact/edit', 'WC\ContactController@update')->name('contact.edit.update');

或者,您也可以在表单中删除此@method('PATCH'),它仍然可以与路线中的post一起使用。.

所有这些检查之后,是否要在控制器中获取数据:

dd($id) and also dd(contact::find($id));

祝你好运..

答案 3 :(得分:0)

我从...更改之后

mkdir thumbs
vipsthumbnail -s 320 -o "thumbs/%s.png" image.png

效果很好

谢谢大家