Как сохранить содержимое текстовой области с помощью Ckeditor и CodeIgniter? - PullRequest
0 голосов
/ 25 марта 2019

Я использую Codeigniter с Ckeditor.Моя проблема в том, что когда я отправляю контент, данные из текстовой области не сохраняются в базе данных.Но когда я попробовал это снова, это наконец сделало.Таким образом, ситуация такова, что мне нужно дважды щелкнуть кнопку отправки, чтобы сохранить его.

Я сохранил загруженный Ckeditor в папке с именем ./Assests/Ckeditor( Извините за неправильное написание. Я исправлю это позже.)

Вот моя форма в папке просмотра:

ask_view.php:

    <form id="form" enctype="multipart/data" method="post"  onsubmit="createTextSnippet();">


                    <div class="form-group"> 
                        <label for="exampleInputEmail1">Title</label>
                        <input type="text" name ="title" class="form-control" id="title"  placeholder="Title" required >
                    </div>


                    <input type="hidden" name="hidden_snippet" id="hidden_snippet" value="" />

                    <div class="form-group"> 
                        <label for="exampleInputEmail1">Editor</label>
                        <textarea name ="text" class="form-control" id="text" rows="3" placeholder="Textarea" required></textarea>
                    </div>
                     <input type="submit" class="btn "  name="submit" value ="Submit" style="width: 100%;background: #f4a950;color:#161b21;">


                </form>

<script src="<?php echo base_url('assests/js/editor.js')?>"></script>

<script type="text/javascript">
    CKEDITOR.replace('text' ,{
        filebrowserBrowseUrl : '<?php echo base_url('assests/filemanager/dialog.php?type=2&editor=ckeditor&fldr=')?>',
        filebrowserUploadUrl : '<?php echo base_url('assests/filemanager/dialog.php?type=2&editor=ckeditor&fldr=')?>',
        filebrowserImageBrowseUrl : '<?php echo base_url('assests/filemanager/dialog.php?type=1&editor=ckeditor&fldr=')?>'
                                    }
                                    );
</script>

<script type="text/javascript">

//code used to save content in textarea as plain text

function createTextSnippet() {

    var html=CKEDITOR.instances.text.getSnapshot();
    var dom=document.createElement("DIV");
    dom.innerHTML=html;
    var plain_text=(dom.textContent || dom.innerText);

    var snippet=plain_text.substr(0,500);
    document.getElementById("hidden_snippet").value=snippet;

    //return true, ok to submit the form
    return true;
}
</script>


  <script type="text/javascript">

    $('#form').on('submit', function (e) {
        e.preventDefault();

        $.ajax({
            type: 'POST',
            url: '/knowmore2/index.php/ask_controller/book_add',
            data: $('form').serialize(),
            success: function (data) {  
               console.log(JSON.parse(data));

            }
        });
    });
</script>


Ask_model.php:

 public function book_add($data)
    {
        $query=$this->db->insert('article', $data);
        return $query;

}

Ask_controller.php:

public function book_add(){
        $data = $_POST;

        $details = array();

        $details['title'] = $data['title'];
        $details['content'] = $data['text'];
        $details['snippet'] = $data['hidden_snippet'];
    $details['createdDate']=date('Y-m-d H:i:s');

        $result=$this->ask_model->book_add($details);

        echo json_encode($details);
    }

Содержимое с тегами html следует сохранять в столбце с именем content в базе данных, но оно не сохранялось при первом щелчке.Это экономит только на втором, но другие данные сохраняются в первом как заголовок и т. Д. Таким образом, я получаю 2 строки данных, один без содержимого, а другой с одним.

База данных:

database_image

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...