본문 바로가기
Vue.js

vue.js [게시판 글 쓰기]

by z00h 2022. 5. 27.

지난번 글 제목을 클릭하여 상세페이지를 띄우는 단계까지 진행하였고

Home화면의 게시판에 글을 작성하는 기능을 추가하였다.

 

 

 

 

우선 /Home에서 게시판의 상단에 글 쓰기 버튼을 추가하여 글쓰기 버튼을 누르면 boardWrite로 이동하여

글 작성을 할 수 있게한다.

 

 

 

 

 

 

 

linkTo 함수를 만들고 클릭하면 넘어 갈수 있도록 만들었다.

 

 

 

 

 

 

 

 

 

 

BoardWtite로 넘어가도록 link1 선언

 

 

 

 

 

 

 

 

 

 

 

 

기존에는 router-link를 사용하였는데 linkTo함수를 만들어서 linkTo안에 data를 넣고 

여러개의 버튼을 추가 할때마다 간단하게 사용할 수 있도록 link1선언 후 BoardWrite를 넣음.

결국 linkTo의 data안에는 link1이 들어가게 된다.

 

 

 

 

 

 

BoardWrite.vue에서 이제 글을 추가할 수 있는 기능이 있도록 작성자, 비밀번호, 제목, 내용을 넣을 수 있는 텍스트를 만들고 그 밑에 글쓰기, 취소 버튼을 만들었다. 

 

 

 

<template>
  <div>
    <h1>게시판 등록</h1>

    <div class="AddWrap">
      <form>
        <table class="tbAdd">
          <colgroup>
            <col width="15%" />
            <col width="*" />
          </colgroup>
          <tr>
            <th>작성자</th>
            <td><input type="text" v-model="author" ref="author" /></td>
          </tr>
          <tr>
            <th>비밀번호</th>
            <td><input type="password" v-model="password" ref="password" /></td>
          </tr>
          <tr>
            <th>제목</th>
            <td><input type="text" v-model="subject" ref="subject" /></td>
          </tr>
          <tr>
            <th>내용</th>
            <td><textarea v-model="content" ref="content"></textarea></td>
          </tr>
        </table>
      </form>
    </div>

    <div class="btnWrap">
      <v-btn @click="write">글 쓰기</v-btn>
      <v-btn @click="linkTo(link1)">취소</v-btn>
    </div>
  </div>
</template>

 

template안에 글쓰기를 클릭하면  write메서드가 실행되도록, 취소 버튼을 클릭하면 linkTo 메서드 실행-> 원래의 글목록 페이지로 돌아가도록 구현하였다.

 

 

 

 

 

 

 

 

 

 

 

script에서 반환받을 변수들을 선언한 모습

 

 

 

 

 

 

 

 

 

 

 

methods: {
    linkTo(data) {
      this.$router.push({name: data})
    },

    write() {
      let data = {}
      data.author = this.author
      data.content = this.content
      data.subject = this.subject
      data.password = this.password

         this.$axios.post("board/", JSON.stringify(data), {
            headers: {
              "Content-Type": `application/json`,
            },
          }).then((res)=>{
              if(res.data.success) {
                alert('등록되었습니다.');
                this.linkTo(this.link1);
              } else {
                alert("실행중 실패했습니다.\n다시 이용해 주세요");
              }
            })
            .catch((err)=>{
              console.log(err);
            })

    },


  }
}

</script>

 

 

우선 linkTo함수를 다시 만들고 link1에 Home을 담아 취소 버튼 클릭시 Home으로 이동하도록하는 메서드 구현.

 

 

write함수를 만들어 body안에 넣어줄 data를 list로 만들어 db안의 NotNull 값들인 (author, content, subject, password)

를 data안에 넣어 주었다.

 

 

글쓰기이기 때문에 post를 쓰고 키, 값쌍의 형태이기 때문에 JSON.stringfy를 꼭 넣어줘서 data를넘겨줘야 하고

헤더에 content-type이 json이라는 것을 명시해주어야 한다.

 

데이터를 성공적으로 받게 되면 '등록되었습니다.'알림이 뜨고 글목록으로 돌아가도록 if문을 만들어서 구현하였다. 

 

 

 

 

 

 

 

 

 

 

글이 잘 등록 되는지 확인해 보았다.

 

 

 

 

 

 

 

 

글쓰기 버튼 클릭

 

 

 

 

 

 

 

 

 

글이 성공적으로 잘 등록이 된것을 볼 수있다!

 

'Vue.js' 카테고리의 다른 글

vue.js [글 삭제하기]  (0) 2022.06.02
vue.js [게시판 글 수정]  (0) 2022.06.01
vue.js [상세 페이지 불러오기]  (0) 2022.05.26
vue.js [게시판 불러오기]  (0) 2022.05.26
vue.js [axios를 통해 데이터 불러오기 3]  (0) 2022.01.14