summernote (данные не сохраняются в БД) (laravel 5.2)

Я использую laravel 5.2 и интегрирую на сайт summernote js.

Я хочу, чтобы, когда пользователь заполняет форму и нажимает «Сохранить», все данные сохраняются в базе данных.

Это работало для одного поля, но не для двух или более.

мой взгляд:

    <form action="{{route('account')}}" id="acc" class="ac" method="post">
  <div class="col-lg-3"><label>Estado</label>

  @foreach($accounts as $account)
  @if($user== $account->user)
  {!! $account->estado !!}
  <textarea  style="display:none;" name="textfield4" id="textfield4"></textarea></div>

  <div class="col-lg-2 es" id="estado"></div>


 <a span class="fa fa-heartbeat"  id="sex" aria-hidden="true">
    </span></a>
</div>
  <div class="col-lg-4"></div>
</div>
<div class="row">
  <section class="col-lg-3"><div><br><label for="textfield5">I'm Good At:</label>


   <p>{!! $account->goodat !!}</p>


   <textarea  style="display:none;" name="textfield5" id="textfield5"></textarea></div>
  <div class="col-lg-2 es" id="goodat"></div>
   @endif
  @endforeach

мой JS в поле зрения:

 <script>

var edit = function() {
  $('#estado').summernote({focus: true});
   $('#goodat').summernote({focus: true});
};

var save = function() {
  var makrup = $('#estado').summernote('code');
  $('#estado').summernote('destroy');

  var makrup = $('#goodat').summernote('code');
  $('#goodat').summernote('destroy');
};

$(".acc").submit(function(e) {
     var self = this;
     e.preventDefault();


    //$('#estado').summernote('destroy');
     var estado = $('#estado').summernote('code');
     $("#textfield4").html(estado); //populate text area



      var goodat = $('#goodat').summernote('code');
     $("#textfield5").html(goodat); //populate text area
     self.submit();
     return false; 


});



</script>

мой контроллер:

 se App\Account;

use Illuminate\Support\Facades\Auth;


class AccountController extends Controller
{

 public function account(Request $request)
    {

        $account = new Account();
        $account->estado = $request->input('textfield4');
        $account->goodat = $request->input('textfield5');
        $request->user()->accounts()->save($account);


        return redirect()->route('myplace',['username'=>Auth::user()->username]);
    }



}

person YaSh Chaudhary    schedule 27.08.2016    source источник
comment
dd($request) — хороший первый шаг, однако вы должны показать содержимое атрибутов и запроса в дампе запроса. Вы также можете попробовать dd($request-›input()) для более четкого результата.   -  person Frnak    schedule 29.08.2016
comment
первая дикая догадка заключается в том, что вы не должны устанавливать содержимое текстовой области с помощью .html(), а использовать .val()   -  person Frnak    schedule 29.08.2016
comment
@FrankProvost при выполнении dd($request-›input()) я получаю следующее: array:4 [▼ textfield4 => textfield5 => textfield9 => _token => HBJGDY760fxF6v5b2eJSOA2G0f2D0saMp3KtTZRg]   -  person YaSh Chaudhary    schedule 29.08.2016
comment
также .val() не работал.   -  person YaSh Chaudhary    schedule 29.08.2016
comment
Как видите, вы на самом деле отправляете пустые строки, поэтому ваша проблема во внешнем интерфейсе. Если вы используете Chrome, нажмите F12, чтобы открыть инструменты разработчика. перейдите в консоль и введите $('#estado').summernote('code'); - убедитесь, что это возвращает желаемый ввод   -  person Frnak    schedule 30.08.2016
comment
VM787:1 Uncaught TypeError: Не удается прочитать свойство 'summernote' из null(…)........ я сделал '$('#estado').summernote('code')' после нажатия кнопки сохранения.   -  person YaSh Chaudhary    schedule 02.09.2016
comment
У вас есть элемент с идентификатором estado?   -  person Frnak    schedule 02.09.2016
comment
да, ‹div class=col-lg-2 es id=estado›‹/div›   -  person YaSh Chaudhary    schedule 02.09.2016
comment
попробуй найти корень проблемы. Первым шагом будет управление тем, что $('#estado') больше не возвращает значение null. Запустите свои сценарии в функции document.ready и повторите попытку. Используйте консоль для быстрых тестов   -  person Frnak    schedule 02.09.2016
comment
извините, не понял, пожалуйста, скажите мне, как это сделать.   -  person YaSh Chaudhary    schedule 02.09.2016
comment
- нет проблем - возможно, добавьте к вашему вопросу, где вы загружаете jquery и другие скрипты. Каков ответ при прямом вызове $('#estado') с консоли?   -  person Frnak    schedule 02.09.2016
comment
Давайте продолжим это обсуждение в чате.   -  person YaSh Chaudhary    schedule 02.09.2016


Ответы (2)


Как обсуждалось в чате https://chat.stackoverflow.com/rooms/122478, фактическая проблема отсутствовала.

$(document).ready(function() { ... });

а также

$(".acc").submit(function(e) { ... });

Фактический класс формы был .ac, а не .acc, однако идентификатор соответствует

Также необходимо изменить редактирование, поскольку его нельзя было вызвать напрямую из события onclick, когда оно было заключено в готовую функцию.

В обсуждении вы можете найти разметку страницы — вставка ее в полнофункциональную IDE покажет массу ошибок — поэтому я дам еще несколько советов относительно состояния кода.

  • У вас много много дубликатов идентификаторов. Не устанавливайте идентификаторы для объектов, которые не нужно идентифицировать по идентификатору — в этом нет необходимости. Если у вас есть цикл, вы не можете просто сказать id=example - каждый раз, когда вы выполняете цикл, будет создаваться объект с одним и тем же идентификатором. jQuery не сможет их идентифицировать. Если вы хотите, чтобы все они использовали классы - если вы хотите идентифицировать их напрямую, используйте инкремент в своем цикле.
  • Неправильное использование разметки: у вас есть div в тегах <ul>, чего делать не следует.
  • </br> неверно, используйте <br> или <br/>
  • много не закрывающихся тегов label B'day: label (два раза открываются)
  • form action=http://localhost:8000/account id=acc class=ac method=post не закрывается - для этого нет </form> - не забудьте вызвать Form::close()

Попробуйте найти подходящий редактор, который поможет вам в этом. Я использую intellij webstorm, который на самом деле стоит немного (бесплатно для студентов).

person Frnak    schedule 02.09.2016

Вы проверили, что ввод запроса присутствует в функции?

Может быть, вы могли бы проверить с помощью:

dd($request);
person Robert Fridzema    schedule 27.08.2016
comment
Я включил скриншот в вопрос - person YaSh Chaudhary; 28.08.2016
comment
Это не полный ответ, это должен быть комментарий - person Frnak; 29.08.2016