【发布时间】:2015-12-12 01:00:32
【问题描述】:
我在路由文件中有 2 个控制器用于从 Ajax 获取数据。我想从 ajax 获取数据并通过 post 方法在简单的控制器中处理它
不幸的是,我收到了这个错误:
BadMethodCallException in Controller.php line 283:
Method [sendSmsToUser] does not exist.
控制器:
Route::group(['middleware' => 'auth'], function () {
Route::post('sendSmsToUser', 'NotificationsController@sendSmsToUser');
Route::post('sendEmailToUser', 'NotificationsController@sendEmailToUser');
});
通知控制器:
class NotificationsController extends Controller
{
/**
* @param Request $request
* @return boolean
*/
public function postSendSmsToUser(Request $request)
{
$info = User::find($request::input('user_id'));
$send = SendSMS::sendSms($info->mobile_number, $request->input('message'));
if ($send) {
Log::info("sms successfull send to user id" + $request->input('user_id'));
return true;
} else {
Log::emergency("sms dont send to user");
return false;
}
}
}
Ajax 请求:
$('[id^="send_sms-"]').click(function () {
var id = $(this).attr('id').split('-');
var message = $('#sms_message-' + id[1]).val();
$.ajax({
type: "POST",
cache: false,
encoding: "UTF-8",
url: "{{ url('sendSmsToUser') }}",
data: {user_id: id[1], message: message},
success: function (data) {
}
});
return false;
});
【问题讨论】:
-
控制器中的方法称为
postSendSmsToUser,但路由正在寻找NotificationsController@sendSmsToUser,不是吗?他们需要匹配吗? -
这可能是
Route::post()和Route::controller()方法之间的混淆,而postSendEmailToUser()方法会响应该路由。