![](/img/trans.png)
[英]Call to a member function tasks() on null on laravel 5.4 adding a new task
[英]Call to a member function name() on null in laravel 5.4
當按下我的發送按鈕時,它發出如下錯誤:
這是我的路線web.php下面-
Route::group(['prefix'=>'ajax', 'as'=>'ajax::'], function() {
Route::resource('message/send', 'MessageController@ajaxSendMessage')->name('message.new');
Route::delete('message/delete/{id}', 'MessageController@ajaxDeleteMessage')->name('message.delete');
});
這是我的控制器MessageController.php下面:
public function ajaxSendMessage(Request $request)
{
if ($request->ajax()) {
$rules = [
'message-data'=>'required',
'_id'=>'required'
];
$this->validate($request, $rules);
$body = $request->input('message-data');
$userId = $request->input('_id');
if ($message = Talk::sendMessageByUserId($userId, $body)) {
$html = view('ajax.newMessageHtml', compact('message'))->render();
return response()->json(['status'=>'success', 'html'=>$html], 200);
}
}
}
資源路由的名稱應不同:
Route::prefix('ajax')->group(function () {
Route::resource('messages', 'MessageController', ['names' => [
'create' => 'message.new',
'destroy' => 'message.destroy',
]]);
});
資源路由也指向控制器,而不是特定的方法。 在MessageController中,應該添加create和destroy方法。
有關更多信息, 請參見https://laravel.com/docs/5.4/controllers#restful-naming-resource-routes
您無法命名資源。 Laravel默認將其命名,如果要命名所有路由,則必須明確指定每個路由。 應該是這樣的:
Route::group(['prefix'=>'ajax', 'as'=>'ajax::'], function() {
Route::get('message/send', 'MessageController@ajaxSendMessage')->name('message.new');
Route::delete('message/delete/{id}', 'MessageController@ajaxDeleteMessage')->name('message.delete');
});
你的另一個錯誤是試圖給資源一個方法。 默認情況下, Route::resource()
用於映射Laravel中的所有基本CRUD路由。 因此,您必須傳遞基本路線和類別,即:
<?php
Route::resource('message', 'MessageController');
查看web.php第28行。
無論您認為具有name()方法的任何對象都尚未設置,因此您嘗試在null上調用方法。
查看該行之前的內容,查看它的定義位置(應該被定義),並確保將其設置為應該的位置!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.