쿠폰모듈질문입니다.
CMS/프레임워크 | Rhymix 2.0 |
---|---|
개발 언어 | PHP 7.4 |
https://github.com/wincomi/xe-module-coupon/blob/master/coupon.class.php
업로드 하면
ArgumentCountError #0 "Too few arguments to function coupon::makeObject(), 0 passed in /www/wwwroot/hohomom/public_html/modules/coupon/coupon.controller.php on line 224 and exactly 2 expected" in modules/coupon/coupon.class.php on line 70
이게 뜹니다. 메인에 접속이 안되네요.
https://xetown.com/questions/576560
이대로 적용했습니다. 라이믹스 2.0.14입니다,
로그인한 상태에서 업로드 하면 접속은 잘됩니다.
그런데 로그아웃 하면 위 메시지가 나옵니다.. 검색해서 삭제할건 삭제했는데 문제가 발생하네요
가이더
Lv. 6
댓글 9
https://github.com/wincomi/xe-module-coupon/blob/master/coupon.controller.php#L224
if(!Context::get('is_logged')) return $this->makeObject(-1, 'msg_need_login');
의 코드로 교체해 보세요.
이제 메인이 이렇게 뜹니다. 말씀해주신 부분만 수정했습니다. 다른건 삭제하거나 수정은 안했습니다.
이렇게 해보세요.
웹지기님이 알려주신 코드는 -1항목과 메세지 항목을 비우신다면 그대로 유지해도 관계 없습니다.
Too few arguments to function 에러자체가 인자로 넘기는 갯수가 부족해서 생기는 php7.1쯤 부터 생겨난 에러입니다.
그렇게하면 오류로 404또는 403 페이지를 리턴시키며 에러메세지를 띄우도록 하는 것입니다.
메뉴를 출력해주는 트리거나 일반적으로 트리거에서는 그냥 리턴만 시켜주는 것이 깔끔합니다. 단 게시글 작성 댓글 작성 과 같은 트리거에서 Before위치의 트리거를 제외한 모듈 핸들러 오브젝트 디스플레이 항목에서는 전부 파라미터로 -1 을 넘기면 안됩니다. 특정 사항이 있을때 넘기는 경우가 간혹 있긴하고 권한으로 에러페이지가 뜨지 않아야 하는 상황에서 리턴정도를 사용하신다면 됩니다. 하지만 특별한 이유없이 에러메세지를 띄우는 경우 제외하곤 대부분은 트리거에서 -1 옵션을 되도록 사용하지 않기를 권장합니다.
if(!Context::get('is_logged')) return ;
이렇게 두개중에 끌리느거 쓰면됩니다.
return $this->makeObject는 return new BaseObject()랑 같으니까 이걸 써두되고요. 트리거에서는 둘다 같은 효과로 종료되는 것입니다.
여기에
public function makeObject($code = 0, $msg = 'success')
으로 수정하시면 됩니다.