• 티스토리 홈
  • 프로필사진
    TheStorybook
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
TheStorybook
  • 프로필사진
    TheStorybook
    • 분류 전체보기 (223)
      • 시놀로지(Nas) (11)
      • XE(Rhymix) (131)
        • 레이아웃, 스킨 관련 (15)
        • 변수 응용 (109)
        • 문제 해결 (3)
        • 기타 메뉴얼 (1)
        • 기타 자료 (0)
      • 그누보드 (7)
      • 작업 소스들 (53)
      • 기타 (6)
      • 추천 사이트 (7)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
      • 개인 자료 보관 blog
      등록된 공지가 없습니다.
    # Home
    # 공지사항
    #
    # 태그
    # 검색결과
    # 방명록
    • 로그인이 필요합니다 이후 로그인 페이지로 어떻게 이동하게 만들 수 있나요
      2025년 01월 29일
      • TheStorybook
      • 작성자
      • 2025.01.29.:01

      Q.

      게시판 글에 추천에 클릭하면

      비회원 추천을 허용하지 않은 경우

      로그인이 필요합니다라는 메시지창이 뜨는데

      그 후로 바로 로그인 화면으로 이동시키고 싶은데 어떻게 할 수 있을까요

       

       


       

       

      1. 현재 사용한 코드입니다.
      
      1) php
      @if($document->getMyVote())
      <a href="javascript:;" onclick="do_doc_VoteSubmit('document','procDocumentVoteUpCancel','{$document->document_srl}'); return false;">좋아요취소 <span class="cnt">{$document->get('voted_count') ? $document->get('voted_count') : ''}</span></a>
      @else
      <a href="javascript:;" onclick="do_doc_VoteSubmit('document','procDocumentVoteUp','{$document->document_srl}'); return false;">좋아요 <span class="cnt">{$document->get('voted_count') ? $document->get('voted_count') : ''}</span></a>
      @endif
      
      2) js
      function do_doc_VoteSubmit(module, action, target_srl) {
      saveScrollPosition(); // 스크롤 위치 저장
      shouldRestoreScroll = true; // 스크롤 복원을 활성화
      var params = { 'target_srl': target_srl, 'cur_mid': current_mid };
      exec_json(module + '.' + action, params, function () {
      location.reload();
      });
      }
      
      2. 조언해주신대로 js를 이렇게 수정해봤습니다.
      function do_doc_VoteSubmit(module, action, target_srl) {
      saveScrollPosition(); // 스크롤 위치 저장
      shouldRestoreScroll = true; // 스크롤 복원을 활성화
      
      const params = { target_srl: target_srl, cur_mid: current_mid };
      
      // Ajax 요청
      exec_json(module + '.' + action, params, function (response) {
      if (response.status === 'error') {
      // 로그인이 필요한 경우 처리
      alert(response.message);
      if (response.redirect_url) {
      window.location.href = response.redirect_url; // 로그인 페이지로 이동
      }
      } else if (response.status === 'success') {
      // 성공 처리
      alert(response.message);
      location.reload(); // 페이지 리로드
      }
      });
      }
      
      이렇게 해도 response 답이 없고 그대로 '로그인이 필요합니다' 라는 메세지만 뜨고 말아버리네요.
      혹시 어디를 찾아봐야할까요.
      
       
      
      아마 위 코드는 document.controller.php에서
      
      function procDocumentVoteUp() 이 함수를 먼저 타서 그런거 같은데요.

       

      if (response.status === 'error') {
      alert(response.message); //
      window.location.href = '/login'; //이동할 주소
      }
      테스트 해본건 아닌데 이렇게 해보시면 될듯합니다.
      
      if (response.redirect_url) {
      window.location.href = response.redirect_url; // 로그인 페이지로 이동
      } 이런부분은 필요없을듯 합니다.

       

      exec_json 은 아니지만 예전에 작업한 ajax 로 procDocumentVote 를 호출한 부분을 수정하여 테스트한 결과
      if (response.error) {
      window.location.href = '/login';
      return;
      }
      이 부분이 작동됩니다.

       

      감사합니다. 코드를 좀 깔끔하게 적어야 하는데 대충 가져와서 하다보니 실수했네요.
      
      function do_doc_VoteSubmit(module, action, target_srl) {
      saveScrollPosition(); // 스크롤 위치 저장
      shouldRestoreScroll = true; // 스크롤 복원을 활성화
      
      const params = { target_srl: target_srl, cur_mid: current_mid };
      
      // Ajax 요청
      exec_json(
      module + '.' + action,
      params,
      function () {
      location.reload(); // 페이지 리로드
      },
      function (response) {
      // console.log(response)
      window.location.href = '/login';
      }
      );
      }
      
      네번째 인자에 이렇게 적어줬는데 '로그인이 필요합니다' alert창은 항상 뜨는데 안뜨게 하는 방법은 없을까요?
      로그인이 필요합니다 라는 경고창이 뜬 후에 이동이 됩니다.

       

      const mid = window.location.pathname;
      window.location.href = mid + '/login';
      return false; // 기본 alert 방지
      
      잘됩니다~~~~

       

      로그인 여부에 따라 스킨 소스에서 미리 거르는 방법도 있을 것 같습니다.
      
      @auth
        @if($document->getMyVote())
          좋아요취소
        @else
          좋아요
        @endif
      @endauth
      
      
      @guest
        <a href="로그인화면">좋아요</a>
      @endguest
      저작자표시 (새창열림)

      'XE(Rhymix) > 변수 응용' 카테고리의 다른 글

      게시글 본문에서 스크랩된 횟수 및 스크랩한 회원 목록 표시  (0) 2025.01.29
      게시판 본문 요약을 불러올때 링크 주소는 제거하기  (0) 2025.01.29
      쿼리문은 어려워#1  (0) 2025.01.29
      글 / 댓글 의 최소 글자수 제한 거는 방법  (0) 2025.01.29
      게시판 스크랩 버튼 만들기  (0) 2025.01.27
      다음글
      다음 글이 없습니다.
      이전글
      이전 글이 없습니다.
      댓글
    조회된 결과가 없습니다.
    스킨 업데이트 안내
    현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
    ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
    목차
    표시할 목차가 없습니다.
      • 안녕하세요
      • 감사해요
      • 잘있어요

      티스토리툴바