Javascript 使用Angular从Laravel 5.1中的所有网站页面提交表格
我在我的网页的标题中有一个回调按钮,所以用户可以从每个页面向我发送消息 我决定创建PostMiddleware,而不是在routes.php中使用特殊的Javascript 使用Angular从Laravel 5.1中的所有网站页面提交表格,javascript,angularjs,laravel-5.1,Javascript,Angularjs,Laravel 5.1,我在我的网页的标题中有一个回调按钮,所以用户可以从每个页面向我发送消息 我决定创建PostMiddleware,而不是在routes.php中使用特殊的Route::post。 这样做,我希望在我的网站的每个页面上,所有POST请求都将被分析,如果它们包含字段formname,那么JSON数据将以邮件消息的形式发送给我 但我有几个问题: 1) 回调表单在我的网站的几乎每个页面上都可以正常工作,但不管怎样,每次我都可以在控制台中看到405个错误代码。据我所知,这是一个错误,因为我没有特殊的POST
Route::post
。这样做,我希望在我的网站的每个页面上,所有POST请求都将被分析,如果它们包含字段
formname
,那么JSON数据将以邮件消息的形式发送给我
但我有几个问题:1) 回调表单在我的网站的几乎每个页面上都可以正常工作,但不管怎样,每次我都可以在控制台中看到405个错误代码。据我所知,这是一个错误,因为我没有特殊的POST请求路径。但我不知道如何消除这个错误。我不想只添加
Route::post
,因为我希望中间件应该更好
2) 回调表单在网页中不起作用,我有另一个表单
。在本网页上,只有SanadoorCalc表格有效。当我单击ng click=“submit(callback.$valid)”
时,控制台中不会发生任何事情
我的代码在下面
钮扣
<a class="btn btn-primary btn-large" href="#callback" title="Обратный звонок" data-toggle="modal" data-target="#callback">
app\Http\Middleware\PostMiddleware.php
namespace App\Http\Middleware;
use Closure;
use URL;
use Event;
use App\Events\SendMail;
class PostMiddleware
{
public function handle($request, Closure $next)
{
if ($request->formname) {
$result = $request->all();
Event::fire(new SendMail($result));
}
return $next($request);
}
}
\app\Events\SendMail.php
namespace App\Events;
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class SendMail extends Event
{
use SerializesModels;
public $result;
public function __construct($result)
{
$this->result = $result;
}
public function broadcastOn()
{
return [];
}
}
\app\Listeners\SendMailFired.php
namespace App\Listeners;
use Mail;
use App\Events\SendMail;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class SendMailFired
{
public function __construct()
{
//
}
public function handle(SendMail $event)
{
$mailarray = $event->result;
switch ($mailarray['formname']) {
case "callback":
Mail::send('emails.callback', $mailarray, function($message) use ($mailarray) {
$message->from($mailarray['email'], $mailarray['name'] );
$message->to('info@site.ru', 'noreply');
$message->setCc($mailarray['email'], $mailarray['name']);
$message->replyTo($mailarray['email'], $mailarray['name'] );
$message->subject('Обратный звонок с сайта');
});
break;
case "saunadoor":
Mail::send('emails.sauna-calculator', $mailarray, function($message) use ($mailarray) {
$message->from($mailarray['email'], $mailarray['name'] );
$message->to('info@site.ru', 'noreply');
$message->setCc($mailarray['email'], $mailarray['name']);
$message->replyTo($mailarray['email'], $mailarray['name'] );
$message->subject('Заказ двери для сауны');
});
break;
}
}
}
\app\Http\Kernel.php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\App\Http\Middleware\PostMiddleware::class,
];
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
];
}
这是路由错误
1/1 MethodNotAllowedHttpException in RouteCollection.php line 218:
in RouteCollection.php line 218
at RouteCollection->methodNotAllowed(array('GET', 'HEAD')) in RouteCollection.php line 205
at RouteCollection->getRouteForMethods(object(Request), array('GET', 'HEAD')) in RouteCollection.php line 158
at RouteCollection->match(object(Request)) in Router.php line 750
at Router->findRoute(object(Request)) in Router.php line 659
at Router->dispatchToRoute(object(Request)) in Router.php line 635
at Router->dispatch(object(Request)) in Kernel.php line 236
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in PostMiddleware.php line 26
at PostMiddleware->handle(object(Request), object(Closure))
at call_user_func_array(array(object(PostMiddleware), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in VerifyCsrfToken.php line 50
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 62
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 122
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87
at Kernel->handle(object(Request)) in index.php line 54
我找到了问题2的答案。这是因为我为每种形式做了单独的角度模块。我不知道一个页面上只能自动加载一个ng应用程序。因此,为了使两个表单在一个页面中工作,我更改了我的angular脚本,如下所示:
angular.module('myapp',[]).controller('callbackController',['$scope','$http','function($scope,$http){}]).controller('calculatorController',['$scope','$http',function($scope,$http)}]))
不仅需要了解路线的问题所在!我找到了问题2的答案。这是因为我为每种形式做了单独的角度模块。我不知道一个页面上只能自动加载一个ng应用程序。因此,为了使两个表单在一个页面中工作,我更改了我的angular脚本,如下所示:angular.module('myapp',[]).controller('callbackController',['$scope','$http','function($scope,$http){}]).controller('calculatorController',['$scope','$http',function($scope,$http)}]))
不仅需要了解路线的问题所在!
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\App\Http\Middleware\PostMiddleware::class,
];
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
];
}
1/1 MethodNotAllowedHttpException in RouteCollection.php line 218:
in RouteCollection.php line 218
at RouteCollection->methodNotAllowed(array('GET', 'HEAD')) in RouteCollection.php line 205
at RouteCollection->getRouteForMethods(object(Request), array('GET', 'HEAD')) in RouteCollection.php line 158
at RouteCollection->match(object(Request)) in Router.php line 750
at Router->findRoute(object(Request)) in Router.php line 659
at Router->dispatchToRoute(object(Request)) in Router.php line 635
at Router->dispatch(object(Request)) in Kernel.php line 236
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in PostMiddleware.php line 26
at PostMiddleware->handle(object(Request), object(Closure))
at call_user_func_array(array(object(PostMiddleware), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in VerifyCsrfToken.php line 50
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 62
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 122
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87
at Kernel->handle(object(Request)) in index.php line 54