Текстовая область с CKEditor не сохраняет html-теги на стороне сервера

#mysql #laravel #server #ckeditor #local

#mysql #ларавель #сервер #редактор #Местные новости

Вопрос:

Я использую Laravel 8, MySQL и CKEditor. Я хотел бы спросить, что может быть причиной разницы между моим локальным и сервером.

На моем локальном компьютере то, что я ввожу в текстовый редактор, будет сохранено в БД вместе с html-тегами.

пример ввода локальный

Находясь на сервере, он сохранит только текст без html — тегов

пример сервера ввода

Ниже приведен мой контроллер

 public function store(Request $reqst){  $new_info = new Information;   $rules = array(  'title' =gt; ['required', 'string', 'max:255'],  'content' =gt; "required",  );   $this-gt;validate($reqst, $rules);   $new_info-gt;title = $reqst-gt;title;  $new_info-gt;content = $reqst-gt;content;  $new_info-gt;user_id = Auth::user()-gt;id;  $new_info-gt;save();   return redirect('/admin/informations'); }  

Вот мой клинок

 lt;form action="{{ route('informations/add-new-information/store') }}" method="POST" class="col-lg-12 mt-4"gt;  @csrf  lt;div class="form-group"gt;  lt;label for="title"gt;Title: lt;span class="text-danger"gt;*lt;/spangt;lt;/labelgt;  lt;input type="text" name="title" id="title" class="form-control @error('title') is-invalid @enderror" required placeholder="Maximum of 255 Characters"gt;  @error('title')  lt;span class="invalid-feedback" role="alert"gt;  lt;stronggt;{{ $message }}lt;/stronggt;  lt;/spangt;  @enderror  lt;/divgt;  lt;div class="form-group"gt;  lt;label for="content"gt;Content: lt;span class="text-danger"gt;*lt;/spangt;lt;/labelgt;  lt;textarea name="content" id="content" cols="30" rows="10"gt;lt;/textareagt;  lt;/divgt;  lt;div class="form-group"gt;  lt;button type="submit" class="btn btn-success"gt;Add New Informationlt;/buttongt;  lt;/divgt;  lt;/formgt;  lt;script src="https://cdn.ckeditor.com/ckeditor5/23.0.0/classic/ckeditor.js"gt;lt;/scriptgt; lt;scriptgt;  ClassicEditor  .create( document.querySelector( '#content' ) )  .catch( error =gt; {  console.error( error );  } ); lt;/scriptgt;  

Я пытаюсь понять, почему html-теги отсутствуют на стороне сервера.

Спасибо 🙂

*** ОБНОВЛЕНИЕ! ***

После выполнения конфигурации php artisan:кэш, маршрут:кэш и просмотр:кэш

HTML-теги больше не передаются даже локально.

Комментарии:

1. Что вы получите, если в начале вашего метода store() вы повторите $reqst-gt;содержимое; затем умрете; — проходит ли HTML в этот момент?

2. @GilesBennett Я попробовал это и разместил на сервере. Нет, это не пройдет.

3. Хорошо, так что, по крайней мере, вы знаете, что это не что-то в вашей базе данных или вашем контроллере, что делает непослушный бит.

4. @GilesBennett Да, это, по крайней мере, мы можем подтвердить, не является причиной проблемы. Спасибо

5. Я не могу воспроизвести это (локально), используя содержимое вашего блейда, контроллер и простую модель с заголовком / содержимым. HTML-теги проходят через отправку формы и сохраняются в базе данных без проблем.

Ответ №1:

вы должны добавить этот скрипт После ckeditor.js сценарий

 lt;scriptgt;  CKEDITOR.replace('content'); lt;/scriptgt; 

Комментарии:

1. Спасибо @Amir, К сожалению, у меня это не сработало.

2. если вы используете ckeditor версии 4. он будет работать.

3. Даже используя ckeditor 4, он все равно не работает

4. пожалуйста, просто добавьте этот код после закрытия тега body и удалите другой код ckeditor: lt;script src=»//cdn.ckeditor.com/4.17.1/standard/ckeditor.js»gt;lt;скрипт src=»//cdn.ckeditor.com/4.17.1/standard/ckeditor.js»gt;lt;/скриптgt; lt;/скриптgt;lt;скриптgt; CKEDITOR.replace(‘содержимое’); lt;скриптgt;lt;/скриптgt;

5. Вот что я сделал.