Обработка формы на ajax laravel

286
08 декабря 2017, 05:13

Всем доброго времени суток. Изучаю laravel. Разобрался с маршрутизацией и сборкой дизайна, добрался до обработки форм. Тестирую на исходниках прошлого учебного проекта, собранного на php+ajax jquery+mysql. Хочу отработать форму комментирования статьи. Код исходников прилагается ниже

Контроллер indexController, метод comment

<?php
public function comment(request $input){
  //$input = $request->all();
  $this->validate($input, [
  'name' => 'required|max:100',
  'message' => 'required|unique:comments,message',
   'article_id' => 'required|articles,id'
  ]);
  $data = array('name' => $input['name'],
      'message' => $input['message'],
      'article_id' => $input['article_id']);
  $result = DB::table('comments')->insert($data);
  if ($result == true) $response = 0;
  else $response = 'error';
  return json($response);
  }
?>

Фрагмент вида article-content.blade.php, форма добавления комментария и аякс обработчик

    <form method="post" action="" id="comment_form">
     <ul>
     <li>
     <label for="name">Ваше имя:</label>
     <input type="text" id="name" required class="required" placeholder="Ваше имя">
     </li>
     <li>
     <label for="message">Комментарий:</label>
     <textarea name="message" id="message" cols="100" rows="6" required  class="required" ></textarea>
      <input type="hidden" id="article_id" value="{{$article->id}}">
      </li>
      <li>
      <button type="submit" name="submit" id="submit" class="button fright">Оставить комментарий</button>
      <span id="resp"></span>
      {{csrf_field()}}
      </li>
      </ul>
      </form>
      <script>
      $(document).ready(function(){
      var time = new Date();
      var date = time.getFullYear()+"-" +(time.getMonth()+1)+ "-" +time.getDate()+ " " +time.getHours()+ ":"+time.getMinutes()+ ":"+time.getSeconds();
      $("#comment_form").submit(function(e){
      e.preventDefault();
      $.ajax({
      type: 'POST',
      url: '/comment',
      data: $("#comment_form").serialize(),
      dataType: 'json',
      cache: false,
      success: function(response){
      var messageResp = new Array('Ваше сообщение отправлено');
      var resultStat = messageResp[Number(response)];
      if(response == 0){
      $("#name").val("");
      $("#message").val("");
      $("#comments").append('<ol class="comments"><li class="comment"><h6>'+name+' <span class="meta">'+date+'</span></h6><p>'+message+'</p></li></ol>');
      }
$("#resp").text(resultStat).show().delay(1500).fadeOut(800);
return false;
}
});
});
});
</script>

Запись в маршрутизаторе route/web.php

Route::post('/comment', 'IndexController@comment');

Собственно вопрос в том, что на сервер приходит урезанный набор полей: инпуты name и article_id не отправляются, в связи с чем валидация не проходит и метод comment возвращает ошибку. Хотелось бы узнать, почему так происходит. Заранее спасибо за ответы

READ ALSO
Не выводит данные по конкретной записи (show) Laravel

Не выводит данные по конкретной записи (show) Laravel

Очень нужна ваша помощь, что-то подтупливаю с утра) Есть куча записей

196
$_GET запрос некорректно работает

$_GET запрос некорректно работает

Делаю самостоятельно календарьИспользуя $_GET получаю месяц и год

141
Как распределить сообщение?

Как распределить сообщение?

Как распределить сообщение таким образом? допустим я справа и собеседник слеваМеня интересует как это реализовать на PHP MYSQL

152
как получить значение строки по id в yii2

как получить значение строки по id в yii2

ребят у меня есть таблица product в ней есть строка организация_id, при заполнении таблицы туда передается id организации,

165