CI 묻고 답하기

제목 혹시 summernote 써보신 분 계신가요? 글 쓰기 시 내용이 입력이 안되네요..
글쓴이 정수킴 작성시각 2014/09/16 13:39:56
댓글 : 9 추천 : 0 스크랩 : 0 조회수 : 40623   RSS
http://hackerwins.github.io/summernote/

라는 bootstrap 기반 위지윅 에디터를 사용하고 있습니다. 

필요한 리소스(css/js)를 적용하고 
 
<script type='text/javascript'>
    $(function() {
        $('.summernote').summernote({
            height : 500
        });
    });
</script>
이렇게 해 준 다음, 

요런식으로 textarea에다가 class를 붙여주면 됩니다
 <div class="row">
   <div class="col-md-12">
      <textarea class="summernote"  name="Contents"  align="left"></textarea>
   </div>  
</div>

글 쓰기를 하면 글 내용 외에 다른 정보들은 정상적으로 디비에 저장이 되는데, 
글쓰기만 저장이 안되네요 ㅠㅠ 
그냥 terxtarea에 name에다가 Contents를 하면 정상적으로 저장이 됩니다.

혹시 제가 잘 못 알고 있는 부분이 있는지 봐주셨으면 감사하겠습니다.

모델은 
 
	function write_contents_announcements() 
	{
		$this_date = date("Y-m-d H:i:s");
		$hit = '0';		
		$data = array(
			'BoardID' => $this->input->post('BoardID') ,
			'BoardTypeID' => $this->input->post('BoardTypeID'),
			'memberNUM' => $this->input->post('memberNUM'),
			'UserName' => $this->input->post('UserName'), 
			'Subject' => $this->input->post('Subject'),
			'Contents' => $this->input->post('Contents', true),
			'FileName' => $this->input->post('FileName'),
			'IsNotice' => $this->input->post('IsNotice'),
			'IsHtml' => $this->input->post('IsHtml'),
			'IsSecret' => $this->input->post('IsSecret'),
			'Hit' => $this->input->post('Hit'),
			'Ref' => $this->input->post('Ref'),
			'Lev' => $this->input->post('Lev'),
			'Pos' => $this->input->post('Pos'),
			'RegDate' => date("Y-m-d H:i",time())
			);

		$result = $this->db->insert('boardweb', $data);

		return $result;

	}	

이렇게 되어 있고

controller는
 
	function contents_announcements_write() {
		$this->load->view('admin/_head');
		$this->load->view('admin/contents_announcements_write');
		$this->load->view('admin/_tail');
	}

	function contents_announcements_write_post() {
		$this->load->model('admin_model');
		$data['result'] = $this->admin_model->write_contents_announcements();
		redirect('/admin/contents_announcements_lists', 'refresh');
	}


view는
<script src="//code.jquery.com/jquery-1.9.1.min.js"></script> 
<script src="<?=ADMIN_JS_DIR?>/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="<?= CSS_DIR?>/font-awesome.min.css">
<script type='text/javascript' src="<?= JS_DIR ?>/summernote.js"></script>
<link rel="stylesheet" type="text/css" href="<?= CSS_DIR ?>/summernote.css">
<link rel="stylesheet" type="text/css" href="<?= CSS_DIR?>/summernote-bs3.css">

<script type='text/javascript'>
    $(function() {
        $('.summernote').summernote({
            height : 500
        });
    });
</script>
<script>
    function submit_form() {
        document.wform.submit();

    }
</script>
<!-- /. NAV TOP  -->
생략...
<!-- /. NAV SIDE  -->
<div id="page-wrapper" >
    <div id="page-inner">
        <div class="row">
            <div class="col-md-12">
               <h2>컨텐츠 공지사항 글쓰기</h2>   
           </div>
       </div>
       <!-- /. ROW  -->
       <hr />
       <form name="wform" method="POST"  action="/admin/contents_announcements_write_post" enctype="multipart/form-data" onsubmit="return false;">
           <div class="row">
            <div class="col-md-12">
                <!-- Advanced Tables -->
                <div class="panel panel-default">
                    <div class="panel-heading">
                       |<a href="/admin/board">일반공지사항 </a> | <a href="/admin/contents_announcements_lists">컨텐츠공지사항</a> |  <a href="/admin/data_room">자료실</a> | <a href="/admin/question_and_answer">질문과 답변</a> | <a href="#">제휴문의</a> |
                    </div>
                    <div class="panel-body">
                        <div class="table-responsive">
                            <table class="table table-bordered">
                                <thead>
                                    <tr>
                                        <th style="vertical-align: middle;" class="col-md-2">제목</th>
                                        <th style="vertical-align: middle;" class="col-md-10">         
                                            <div class="input-group">                          
                                                <span class="input-group-addon"><span class="glyphicon glyphicon-th-large"></span></span>
                                                <input type="text" name="Subject" class="form-control" maxlength="50" value="" />
                                            </div>
                                        </th>
                                    </tr>
                                    <tr>
                                        <th style="vertical-align: middle;" class="col-md-2">작성자</th>
                                        <th style="vertical-align: middle;" class="col-md-10">
                                            <div class="input-group">                          
                                                <span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
                                                <input type="text" name="UserName" id="input" class="form-control" value=""  pattern="" title="">
                                            </div>
                                        </th>
                                    </tr>
                                    <tr>
                                        <th style="vertical-align: middle;" class="col-md-2">옵션</th>
                                        <th style="vertical-align: middle;" class="col-md-4">
                                            <div class="btn-group" data-toggle="buttons">
                                                <label class="btn btn-default active">
                                                    <input type="radio" name="IsNotice" id="1" value="1"  checked>공개글
                                                </label>
                                                <label class="btn btn-default">
                                                    <input type="radio" name="IsSecret" id="1" value="1"> 비밀글
                                                    <input type="hidden" name="BoardTypeID" id="2" class="form-control" value="2">
                                                    <input type="hidden" name="memberNUM" id="10" class="form-control" value="10">
                                                </label>
                                            </div>                                              
                                        </th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <tr>
                                        <td colspan="2" style="padding: 5px;">
                                            <div class="row">
                                                <div class="col-md-12">
                                                    <textarea class="summernote"  name="Contents"  align="left"></textarea>
                                                </div>  
                                            </div>
                                        </td>   
                                    </tr>
                                </tbody>
                            </table>
                            <button type="button" class="btn btn-lg col-md-offset-11 btn-success" onclick="submit_form();">저장</button>
                        </div>

                    </div>
                </div>
                <!--End Advanced Tables -->
            </div>
        </div>
    </form>
</div>
</div>
<!-- /. PAGE INNER  -->
</div>

이런식으로 되어있습니다. ㅠㅠ

 
 다음글 session flashdata 관련 질문입니다. (2)
 이전글 post 사이즈 (1)

댓글

한대승(불의회상) / 2014/09/16 15:12:25 / 추천 0
프로파일러를 켜신후 데이터가 정상적으로 포스팅 되는지 확인 해보세요.

http://cikorea.net/user_guide_2.1.0/general/profiling.html
헤덥 / 2014/09/16 15:39:35 / 추천 0
예전에 저도 붓스트렙 텍스트 에디터를 테스트삼아 써본기억이 나는데요 
아마도 summernote 라는 클래스를 textarea 가 아닌 div 에 감싸야 되는게 아닌가 싶네요
메뉴얼 들어가보니 이렇게 돼어있네요
<div class="summernote">summernote 1</div>
<div class="summernote">summernote 2</div>

Then run summernote with jQuery selector.

$(document).ready(function() {
  $('.summernote').summernote();
});
헤덥 / 2014/09/16 15:46:02 / 추천 0
컨텐츠 값을 가져오는거나 세팅하는법은 이렇게 돼있네요 
 
var sHTML = $('.summernote').code();

Get the HTML content of the second summernote with jQuery eq.

var sHTML = $('.summernote').eq(1).code();

A string of HTML to set as the content of each matched element.

$('.summernote').code(sHTML);
 
헤덥 / 2014/09/16 15:49:00 / 추천 0
Contents 라는 인풋타입을 하시고 싶으면 
Input type  히든 네임 Contents 값 만드시고 id 값이나 class값 주시고 

Jquery 에서 서브밋 시키기 전에 $("#Contents").val($('.summernote').code()) 이런식으로 값 주시면 될것 같은데 
 
<script type='text/javascript'>

$(function() {

	$('.summernote').summernote({
		height : 500
	});

	$('버튼').on('click', function(){
		$('.summernote').append('<input type="hidden" name="Contents", id="Contents" />');
		$('#Contents').val($('.summernote').code());
		$('폼').submit();
	})
});

</script>


안될 수 도 있어요
초보라 답변이 허접해서 죄송해요 
정수킴 / 2014/09/16 16:38:45 / 추천 0
한대승(불의회상) 역시 POST DATA 에 값이 안넘어가네요 ^^;
헤덥 답변 감사합니다
div가 아니여도 textarea로도 가능합니다. 일단 알려주신 내용은 https://gist.github.com/soomtong/6635053 여기에도 있어서 그대로 해봐도 역시 값이 안넘어가네요 ㅠㅠ
letsgolee / 2014/09/16 16:57:04 / 추천 0
summernote 소스코드를 잠깐 보니 원래 form submit을 할 경우 자동적으로 소스코드가 삽입되도록 되어 있습니다. 그런데 정수킴님은 submit_form()을 이용해 전송을 하고 있기 때문에 그 코드가 자동적으로 실행되지 않는거죠. 따라서 submit_form()안에 관련 코드를 넣어주어야 합니다. 다음의 코드를 넣어보세요. 테스트는 안해봤습니다.

$('.summernote').val($('.summernote').code());
한대승(불의회상) / 2014/09/16 16:57:12 / 추천 0
정수킴// 메뉴얼을 보면 submit 만으로는 데이터를 전송하지 못하는것 같네요.

submit 하기전에 데이터를 받아서 hidden 태그에 넣어 주는 방법을 쓰던지 해야 할듯...
var sHTML = $('.summernote').code();
alert(sHTML);
헤덥 / 2014/09/16 17:48:03 / 추천 0
정수킴// 예제를 post 로 넘겨본 결과 잘되네요 

윗분들 말씀처럼 아래 코드를 서브밋 전에 어딘가에서 실행만 시켜주면 될 것 같네요 
예제에선 텍스트에이리어를 그냥 코드값을 받아 html 로 넘겨주네요~ 
 $('textarea[name="Contents"]').html($('.summernote').code()); 
정수킴 / 2014/09/17 09:02:35 / 추천 0
letsgolee / 한대승(불의회상)  / 헤덥 
답변 감사합니다. 
질문 올려놓고 어제 혼자 끙끙 해보겠다고 프로파일러 켜구 끙끙 거리다가 결국 혼자 해결했는데 
알려주신데로 하는게 답이였더군요 ^^
감사합니다

나중에 기회가 된다면 summernote 적용기 (?) 포스팅 해보도록 하겠습니다. ^^