Laravel 5.6 Function()在route / web.php中不存在

时间:2018-08-26 02:10:16

标签: laravel laravel-5

这是我用来发送电子邮件的代码

Route::post('/mail/send', [

    'EmailController@send',

]);

EmailController中,这是发送操作

public function send(Request $request)
{    
    $data = $request->all();
    $data['email'] = Input::get('email');
    $data['name'] = Input::get('name');

    $obj = new \stdClass();
    $obj->attr = 'Hello';

    Mail::to("dev@mail.com")->send(new WelcomeEmail($obj));
}

获取错误为Function () does not exist

3 个答案:

答案 0 :(得分:2)

在您的路线/web.php中

将其更改为

Route::post(‘/mail/send’,‘EmailController@send’);

请参阅文档以查看定义路线的可能选项

https://laravel.com/docs/5.6/routing

答案 1 :(得分:1)

在您的路线上...

Route::post('/mail/send','EmailController@send')->name('send_email');

在您的HTML表单内添加以下代码...

<form action="{{route('send_email')}}"     method="post">
...
{{csrf_field()}}

答案 2 :(得分:1)

可以使用数组定义路由的操作方法,但不能简单地将controller@action包装在数组中,您应该将其分配给数组的键'uses'

在您的示例中,应该像这样:

Route::post('/mail/send', [

    'uses' => 'EmailController@send',
    //'middleware' => .... assign a middleware to this route, if needed
]);

当我们要指定关于路由的更多规范(例如使用特定的中间件并传递中间件参数)时,通常使用数组形式。

如果您只想定义路线的处理方法,则可以简单地将controller@action用作Route::post的第二个参数:

Route::post('/mail/send','EmailController@send');