2

このコードには多くのエラーがあると思います。必要なのは、フォームを作成し、XHR をコントローラーに送信し、データを取得し、モデルに送信し、検証を確認し、検証の出力をコントローラーに返し、ビューに「エラーまたは成功」というメッセージを送信することです。

ルート.php

Route::get('checkValidationEmail', 'HomeController@checkValidationEmail');

<?php
echo Form::open(array('url' => 'checkValidationEmail', 'class' => 'form_notify'));
echo Form::text('Email', Input::old('Email'),  array('placeholder'=>'Email', 'class' => 'hg'));
echo Form::close() 
?>

<a href="#" class="send_email"> Notify Me!</a>

わかりました、これは問題なく動作します。次に、問題が始まります。


AJAX

<script>
    $(function () {
        $(".send_email").click(function () {
            email = $('.hg').val();

            $.ajax({
                type: "POST",
                url: 'checkValidationEmail', //what is the correct url?
                data: {
                    email: email
                }
            }).done(function (msg) {
                alert(msg);
            });

        });
    });
</script>

500 エラー:

{"error":{"type":"Symfony\\Component\\HttpKernel\\Exception\\MethodNotAllowedHttpException","message":"","file":"C:\\VertrigoServ\\www\\laravel\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php","line":1439}}

コントローラ

class HomeController extends BaseController {
       public function checkValidationEmail() {
           //how to get the data from form and pass to the model, more exactly validate($input)

                   if ($validation) {
                      return true;  
                   }
                   else {
                      return 'incorrect email'; //how send this message to the view?
                   }
       }
}

モデル

class Home extends Eloquent {

    protected $table = 'emails';

    public function validate($input) {
       //validations
    }

}
4

1 に答える 1

5

ルートではcheckValidationEmailasGETリクエストとして定義されており、ajax から、これにPOSTリクエストとしてアクセスしようとしています。したがって、これはスローしMethodNotAllowedHttpExceptionます。そのため、ルートを変更する必要があります。

Route::get('checkValidationEmail', 'HomeController@checkValidationEmail');

に、

Route::post('checkValidationEmail', 'HomeController@checkValidationEmail');

または、

Route::any('checkValidationEmail', 'HomeController@checkValidationEmail');
于 2013-10-02T07:55:17.703 に答える