질문/조언질답게시판
Extra Form
PHP PHP 8.1
CMS Rhymix 2.x

    public function triggerBeforeInsertComment($obj)
    {

 

또 뭔가 기능 개발이 필요해서 모듈을 스스로개발해보고 있습니다!

댓글 작성 전 실행할 트리거인데요

 

혹시 인자로 전달받는 obj에서 "현재 작성하려는 댓글이 달린 문서 번호" 를 가져오는 방법이 있을까요?

 

즉, A라는 사람이 작성한 글에 B라는 사람이 댓글을 작성할때 해당 트리거가 실행되는데

A라는 사람이 작성한 글(댓글이 달리는 글)의 document_srl을 불러오는 방법이 궁금합니다.

  • profile
    정확히 기억은 안나는데 이미 obj 가 가지고 있지 않나요? 그랬던 것 같은데
  • profile
    comment.inserComment 실행에 거는 게 맞다면
    그냥 obj->document_srl 에 들어가 있을거에요.
  • profile profile
    혹시 Context::get('document_srl'); 은 사용이 불가할까요? ㅠㅠ
  • profile profile
    저도 초보라... ㅎㅎ 그래도 나올 것 같긴한데요.
    그런데 이미 확실하게 obj에 들어가있으니 그거 사용하셔도 될 것 같아요.
  • profile profile
    이미 $obj 에 해당 내용이 담겨져 넘길꺼예요.

    https://github.com/rhymix/rhymix/blob/master/modules/comment/comment.controller.php#L401 이 시점 이전에 만들거든요

    근데 새롭게 댓글을 작성하는 과정에서 첨부 파일이 없다면 $obj->comment_srl 은 null 입니다.
  • profile profile
    굳이 등록하기전에 comment_srl 이 필요하시다면 해당 트리거 실행하신 곳에서

    if(!$obj->comment_srl)
    {
    $obj->comment_srl = getNextSequence();
    }

    이렇게 코드넣어서 새로운 comment_srl 을 미리 넣어 넘겨도 무관합니다.
  • profile profile

    그렇게 하면 실제 댓글과 전혀 상관없는 시퀀스 번호가 되지요.

    글 번호를 알고 싶다고 하셨는데 왜 댓글 번호 얘기가 나왔는지 모르겠습니다만
    댓글 번호가 필요한 경우 before가 아닌 after에서 트리거를 잡아야겠지요.

  • profile profile

    필요한 내용을 깔끔하게 정리해서 $obj에 담아드렸는데 굳이 왜 다른 곳을 참조하나요?

     

    Context에 document_srl이 있다 해도 현재 댓글 작성 대상 문서번호와 일치한다는 보장이 없습니다.

    Context는 공용 공간이기 때문에 다른 애드온이나 모듈들도 건드릴 수 있거든요.

  • profile profile

    아하 댓글 번호가 아니라 글번호엿군요..

    $obj->document_srl 을 쓰면 될텐데요.. 대댓글 타레들을 보니 뭔가 작동이 안되는 식으로 이해가 되어 comment_srl 을 before에서 가져올려고 하는 것으로 이해했었습니다..;ㅁ;

  • profile profile
    감사합니다 덕분에 구현하였습니다