Mublo Framework v1.7.0 릴리즈 — 관리자 목록 번호 정리, 상품 판매 상태 스위치

wwiz 2026-10-14 11:11 조회 2 수정됨

Mublo Framework v1.7.0 을 릴리즈했습니다.

이번 릴리즈는 관리자 화면을 쓰기 편하게 다듬은 것이 중심입니다. 관리자 목록의 '번호'가 DB 고유번호 대신 목록 번호로 나오고, 쇼핑몰 상품 목록에서 판매 상태를 스위치로 바로 바꿀 수 있습니다. 여기에 라우트 캐시가 간헐적으로 500 오류를 내던 문제와 센드온 문자 연동 고장 등을 고쳤습니다.

데이터베이스 마이그레이션도 삭제할 파일도 없습니다. 다만 라우트 캐시는 비워야 합니다. 아래 업그레이드 항목을 먼저 읽어주세요.


관리자 목록의 번호가 목록 번호로 나옵니다

종전에는 관리자 목록의 '번호' 칸에 DB 고유번호가 그대로 나왔습니다. 다른 사이트에서 회원·상품을 옮겨 오거나 지우고 나면 이 번호가 가입·등록 순서와 어긋나고 빈 번호도 생겨서, 몇 번째 항목인지 가늠하는 데 쓸 수 없었습니다.

  • 이제 게시판처럼 "전체 건수 − 앞 페이지 건수 − 순서"로 번호를 매깁니다. 첫 행이 가장 큰 수이고, 검색·필터 결과에도 맞춰집니다.
  • 고유번호는 번호에 마우스를 올리면 ID 123 처럼 보입니다. 문의 대응이나 오류 추적에는 여전히 고유번호가 필요하기 때문입니다.
  • 회원·도메인·메뉴·상품·쿠폰·기획전·문의·리뷰·배송·찜·옵션 프리셋·상품정보고시 템플릿 목록과, 배너·팝업·설문·Q&A·메일/문자/알림톡 발송 목록에 적용했습니다.
  • 목록 번호는 정렬 대상이 아니라서 회원·메뉴 목록의 번호 정렬은 없어졌습니다.
  • 칸 제목이 'ID' 인 블록 페이지·블록 행·게시판 관리 목록은 고유번호를 그대로 보여줍니다.

쇼핑몰: 상품 목록에서 판매 상태를 바로 바꿉니다

관리자 상품 목록의 상태 칸에 판매중·판매중지 스위치가 생겼습니다. 수정 화면을 열지 않아도 바로 저장됩니다.

  • 요청하는 동안은 스위치가 잠기고, 실패하면 원래 상태로 되돌아갑니다.
  • 현재 도메인의 상품만 바꿀 수 있습니다.
  • 상태가 바뀌면 수동·자동 상품 진열의 캐시도 함께 갱신되므로, 판매중지한 상품이 진열 블록에 남아 있지 않습니다.
  • 재고와 품절 표시는 종전처럼 재고 칸에서 따로 확인합니다.

그 밖에 고친 것

  • 라우트 캐시 때문에 간헐적으로 500 오류가 나던 것을 고쳤습니다. 캐시가 만료되거나 삭제되는 순간 요청이 겹치면 사라졌거나 덜 쓰인 캐시를 읽을 수 있었습니다. 이제 도메인별 잠금으로 캐시를 읽고, 다시 만들고, 지우는 작업의 순서를 맞춥니다. 완성된 파일만 한 번에 교체합니다. 캐시 저장에 실패해도 요청 처리는 계속됩니다.
  • 화면 상단 헤더나 모달 푸터처럼 폼 밖에 놓인 저장 버튼이 눌러도 아무 반응이 없던 것을 고쳤습니다. 버튼의 data-target 에 폼 id 를 적으면 그 폼을 제출합니다.
  • 약관/정책 수정 화면에서 저장된 정책 종류가 선택되지 않고 '이용약관'으로 나오던 것을 고쳤습니다. 개인정보처리방침 등을 열어 그대로 저장하면 종류가 이용약관으로 바뀌거나 '이미 등록되어 있다'는 오류가 났습니다.
  • 센드온 문자(SendonSms)의 잔액 조회와 발신번호 가져오기가 실패하던 것을 고쳤습니다. 센드온 쪽 API 주소가 바뀌어 예전 주소로는 조회되지 않았습니다.
  • 설치 화면 하단의 버전이 1.0.0 으로 고정되어 나오던 것을 고쳤습니다. 설치 완료 기록에도 실제 배포 버전이 남습니다.

업그레이드

v1.6.0 에서: 패치 zip(mublo-1.6.0-to-1.7.0-patch.zip, 변경 파일 57개)을 설치 루트에 덮어씁니다. 삭제할 파일도, 마이그레이션도, composer 의존성 변경도 없습니다. .env 는 덮어쓰지 않습니다.

★ 라우트 캐시를 비워야 합니다. 쇼핑몰에 판매 상태 변경 주소가 추가됐습니다. 비우지 않으면 상품 목록의 판매 상태 스위치가 404 로 실패합니다.

rm -f storage/cache/routes/*

확장 8종은 코어와 함께 올라가야 합니다. Shop · Q&A · 배너 · 팝업 · 설문 · 메일 알림 · 센드온 문자 · 센드온 알림톡이 새 목록 번호 기능을 쓰므로 코어 1.7.0 이상을 요구합니다. 패치 zip 에 모두 들어 있으니 일부만 골라 덮어쓰지 마세요.

적용 후 관리자 → 시스템 관리 에서 버전이 1.7.0 인지 확인하세요. 관리자 화면의 저장 버튼 동작이 바뀌었으니 강력 새로고침(Ctrl+F5)으로 확인합니다. MubloRequest.js 가 바뀌었습니다.

프론트 스킨(views/Front/...)은 바뀌지 않았습니다. 복사해 쓰는 스킨이 있어도 신경 쓰지 않으셔도 됩니다.

v1.6.0 미만에서 올라오는 경우에는 v1.6.0 까지 올린 뒤 이 패치를 적용하거나, 전체 배포본으로 교체하세요.


확장을 직접 만드셨다면

코어 계약에 메서드가 추가됐습니다. 계약을 호출만 하는 확장은 고칠 것이 없습니다. 계약 인터페이스를 직접 구현한 경우에만 아래 메서드를 추가해야 합니다.

  • Contract\Member\MemberAccountGatewayInterface
  • withdrawWithPassword(int $memberId, string $password, string $reason = ''): 세션이 없는 클라이언트(모바일 앱 API 등)에서 현재 비밀번호로 본인을 확인한 뒤 탈퇴시킵니다. 확인 뒤의 처리는 웹 마이페이지 탈퇴와 같고, 시도 횟수 제한은 호출하는 쪽이 맡습니다.
  • changeLevel(int $memberId, int $toLevel, array $onlyFrom): bool: 확장이 회원 등급을 바꿀 때 씁니다. 현재 등급이 $onlyFrom 안에 있을 때만 바꾸므로 관리자가 따로 준 등급은 덮어쓰지 않습니다. 관리 권한 등급은 주거나 빼앗을 수 없습니다. 바뀌면 MemberUpdatedEvent 가 발행됩니다.
  • Contract\Balance\BalanceGatewayInterface
  • sumByAction(int $memberId, int $domainId): array: 회원 원장을 action 별 합계로 돌려줍니다. 적립·충전·사용·출금을 나눠 볼 때 씁니다.

그 밖에 새로 쓸 수 있게 된 것도 있습니다.

  • 관리자 목록 빌더의 목록 번호 칸 ListColumnBuilder::rowNumber() 와 페이지 정보 설정 ListRenderHelper::setPagination()
  • 쇼핑몰 ProductChangedEvent 의 선택 인자 $autoBlocksAffected: 기존 호출은 그대로 동작합니다.

자세한 내용은 docs/reference/extension-core-contracts.md 에 있습니다.


상세 변경 내역

포함된 PR: #77 · #78 · #79 · #80 · #81 · #82 · #83 · #84 · #85 · #86

글쓰기

댓글 0

등록된 댓글이 없습니다.