Javascript 使用Angular从Laravel 5.1中的所有网站页面提交表格

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

我在我的网页的标题中有一个回调按钮,所以用户可以从每个页面向我发送消息

我决定创建PostMiddleware,而不是在routes.php中使用特殊的
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