질문/조언질답게시판

회원정보에 text로 이루어진 city 항목이 있다고 가정할게요. 해당 데이터는 필수항목은 아닙니다.

이제 외부 페이지에 접근했다 가정할게요. 거기에는 버튼이 있고요. 버튼을 누르면 회원정보 추가 항목인 city 데이터를 업데이트(추가/수정)하고 싶어요..!! 예를 들어 버튼 클릭하면 city에 'Seoul'이라는 값을 입력시키는거죠 또는 이미 다른 것으로 되어있다면 'Seoul'로 업데이트하는거죠.

 

member 모듈에서 처리가능할 것 같은데 일단 &getModel('member'); 불러오고 설정 &getController('member'); 도 불러오고

그리고 어떤 함수를 불러와야 할까요?

 

procMemberInsert
procMemberModifyInfoBefore
procMemberModifyInfo
insertMember
updateMember
updateMemberExtraVars
 

어떤 방식으로 시도를 해야할까요?

  • profile
    updateMember쓰셔야죠.

    updateMember에서 기존의 $args 인자 넘길때 기존 회원정보의 인자값과 함께 님이 만드신 확장변수인 city 항목을 $args->extra_vars 안에 serialize 시켜서 잘 넘겨줘야 합니다.

    기존의 확장변수가 없어지지 않도록 기존 회원정보를 재대로 가져와서 extra_vars에 있는 항목을 조합할 수 있도록 만드시는게 관건이겠네요.
  • profile

    확장변수만 업데이트하시려면 updateMemberExtraVars가 좀더 안전합니다.

    확장변수가 아닌 정보는 건드리지 않으니까요.

  • profile profile
    버튼으로 만들고 싶으면 어떻게 접근하는 것이 좋을까요?
  • profile profile
    해당 버튼을 새로운 모듈을 만들어서 해당모듈의 post액션으로 보내면 될 것 같습니다.

    procMemberInsert
    procMemberModifyInfoBefore
    procMemberModifyInfo

    요롷게 시작되는 항목들은 대부분 form 태그안에서 act값을 불러오는 메소드에 해당됩니다.

    즉 외부에서 getController('member')->procMemberInsert()

    이렇게 싸용하는걸 권장하지 않는 항목들입니다.

    그러니 "새로운 모듈"을 제작하여 해당 모듈에서 proc로 시작되는 POST전용 메소드를 만들어 해당 버튼을 form으로 잘 만들어주면 간단하게 버튼으로써 해결이 가능합니다.

    때에 따라서 input type hidden 옵션을 줘서 member_srl 을 바꿔서 진행하셔도 되고요.
  • profile profile

    input type hidden을 줘서 처리했는데 이상하게 바로 바뀌지 않고 두번 눌러야(새로고침되고나서 버튼 한번 더 눌러서) 비로소 변경이 되더라고요 왜 그러는걸까요 ㅜㅜ..

  • profile profile
    처리해주셧다 처리해주셧다 하는데 보통 hidden 에서 재대로 값이 정상적으로 잘 만들어서 값이 들어갔다면 바로 되는것이 원칙입니다.

    구현하신 부분이 뭔가 잘못됬는지 확인이 안된다면 저희도 도움이 드릴 방도는 없지요.
  • profile profile
    아, 정확히는 form 전송 후 새로고침해야 변경내용이 보인다고 해야겠네요. 값은 정상적으로 전송되는 것 같은데 말이죠.
  • profile profile
    오오.. 자문자답이지만.. 꼼수를 좀 이용해서 처리했어요. form 처리되면 이전 페이지로 가도록 처리하니까 즉각적으로 변경되네요... 암튼 너무 감사합니다..!!
  • profile profile
    exec_json 으로 처리한뒤 해당 값을 정상적으로 눌러서 반영이 된경우라면 해당 값을 ajax으로 되받아 처리할 수도 있습니다..-_-;
  • profile
    @람보 @기진곰 감사합니다..!! 덕분에 원하는대로 처리했어요 ㅎㅎ
    실력이 부족한 제가 람보님의 설명이 어렵게 느껴지니 공부해야겠네요 ㅠㅠ
    단순히 접근하면 확장변수를 업데이트만하면 되는 것이라 updateMemberExtraVars을
    이용했습니다..!! 배열을 불러와서 값을 그냥 바로 대입했어요..!!