Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 28.01.2017 08:51:17

Валидация формы с ajax не работает

js код работает хорошо, но не знаю что делать с ошибками.

@extends('main_admin')

@section('metaTitle')
   Услуги
@stop

@section('body')

    <div class = "container main-container">

        <div class = "row">
            <div class = "col-md-12">
                {{ Form::open(array('action' => 'Controller@create_service','class'=>'form-create-usl'  )) }}
                    {{ Form::label('name', 'Название услуги: ') }}
                    {{ Form::text('name_service','', array('class'=>'name_service') ) }}
                    {{ Form::submit('Создать услугу',array('class'=>'create_usl' )) }}
                {{ Form::close() }}
            </div>

        </div>


        <div class="services">
            <?php
            echo  view('service_paginathion');
            ?>
        </div>

     </div>

@stop

@section('js')
    <script type="text/javascript">
        (function($){
            $( ".create_usl" ).click(function(ev) {
                ev.preventDefault();
                var request = $.ajax({
                    url: $('.form-create-usl').attr('action'),
                    type: "POST",
                    data:  { name:  $(this).parent().find('.name_service').val() },
                });
                request.done(function(msg) {
                    $('.js-test-body').html( msg );
                });
                request.fail(function(jqXHR, textStatus) {
                    var errors = jqXHR.responseJSON;
                    var html = '';
                    $.each( errors.errors, function( key, value ) {
                        //alert( key + ": " + value );
                        html +=  key + ": " + value ;
                    });
                    $('.js-test-body').html( html );
                });
            });

        })(jQuery);


    </script>
@stop

Возврат ошибок тоже работает, но ток в одном случае. Я хочу знать почему не работает в другом(в коде описана ошибка с лога)

public function create_service(Request $request)
    {
        User::check_user_adm_with_error();
        //почему не рбаотает такой вариант? он выводит 422 (Unprocessable Entity),
        // в логе написано Next exception 'ErrorException' with message 'Action App\Http\Controllers\Controller@create_usl not defined.
        /*$this->validate($request, [
            'name' => 'required|unique:services',
        ]);*/
        // Setup the validator
        $rules = array( 'name' => 'required|unique:services');
        $validator = Validator::make(Input::all(), $rules);
        // Validate the input and return correct response
        if ($validator->fails())
        {
            return Response::json(array(
                'success' => false,
                'errors' => $validator->getMessageBag()->toArray()

            ), 400);
        };
        //
        return Input::get('name');
    }

И, подскажите, пожалуйста, может есть другой способ валидации, ну или код можно по-другому написать, упростить, или всё-таки так правильно?

Изменено Kirir (28.01.2017 08:52:05)


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

Подвал раздела