【问题标题】:Trying to get property of non-object when posting data发布数据时尝试获取非对象的属性
【发布时间】:2017-01-26 04:12:35
【问题描述】:

我在处理数据时多次看到此错误,但现在我只是尝试将数据发布到我的控制器,但我不明白为什么我看到此错误,因为没有任何对象?

Trying to get property of non-object

视图-

<form role="form" class="wizard" type="POST" action="{{ route('data.post') }}">
  {{ csrf_field() }}
    <input type="text" name="seo_score" value="" placeholder="SEO Score e.g. 82" class="col-md-3" maxlength="2"/>

    <div class="col-md-4 col-md-offset-8 submit">
      <hr>
      <button type="submit" class="primary-btn">Submit</button>
    </div>
</form>

路线——

Route::get('/admin/overview/{id}', [
    'uses' => '\App\Http\Controllers\AdminController@getSingle',
    'as' => 'account.single',
    'middleware' => ['auth', 'admin'],
]);

Route::post('/admin/overview/post', [
    'uses' => '\App\Http\Controllers\AdminController@postData',
    'as' => 'data.post',
    'middleware' => ['auth', 'admin'],
]);

控制器 -

public function postData(Request $request) {
   return redirect()->back();
}

【问题讨论】:

  • 发布数据后重定向到哪里?在该视图中,您正在尝试访问非对象的属性
  • 更新了完整的源代码
  • 如果我从视图中删除以下行,它将不再引发错误。 `

    {{ $account->name }} 概述

    ` 但它不会将数据发布到正确的控制器,所以我认为我遇到了类似的问题路线?
  • 试试这个 $account = Accounts::findorfail($id) ;并仅返回它我认为您正在访问的 id 不存在
  • @NinoArmani 是的,这可能是原因,我之前提到考特尼应该检查数据库。我认为这是帐户表。检查accounts表并尝试访问存在的id。还要确保accounts表中没有空值。

标签: php laravel laravel-5 routes


【解决方案1】:

所以这有一些问题首先html表单有type="post"而不是method="post。这混淆了路由,我还试图返回一个我也从另一个控制器传回数据的路由。我现在已经更新了路由并传递了 get 请求,这样就不会失败。

Route::get('/admin/overview/{id}', [
    'uses' => '\App\Http\Controllers\AdminController@getSingle',
    'as' => 'account.single',
    'middleware' => ['auth', 'admin'],
]);

Route::post('/admin/overview/{id}', [
    'uses' => '\App\Http\Controllers\AdminController@postSingle',
    'middleware' => ['auth', 'admin'],
]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    相关资源
    最近更新 更多