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

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입니다,

 

로그인한 상태에서 업로드 하면 접속은 잘됩니다.

그런데 로그아웃 하면 위 메시지가 나옵니다.. 검색해서 삭제할건 삭제했는데 문제가 발생하네요

  • profile

    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');

    의 코드로 교체해 보세요.

  • profile ?

    main.PNG

     

    이제 메인이 이렇게 뜹니다. 말씀해주신 부분만 수정했습니다. 다른건 삭제하거나 수정은 안했습니다.

  • profile profile

    그렇게하면 오류로 404또는 403 페이지를 리턴시키며 에러메세지를 띄우도록 하는 것입니다.

    메뉴를 출력해주는 트리거나 일반적으로 트리거에서는 그냥 리턴만 시켜주는 것이 깔끔합니다. 단 게시글 작성 댓글 작성 과 같은 트리거에서 Before위치의 트리거를 제외한 모듈 핸들러 오브젝트 디스플레이 항목에서는 전부 파라미터로 -1 을 넘기면 안됩니다. 특정 사항이 있을때 넘기는 경우가 간혹 있긴하고 권한으로 에러페이지가 뜨지 않아야 하는 상황에서 리턴정도를 사용하신다면 됩니다. 하지만 특별한 이유없이 에러메세지를 띄우는 경우 제외하곤 대부분은 트리거에서 -1 옵션을 되도록 사용하지 않기를 권장합니다.

  • profile profile
    그렇다면 저기서는 굳이 메시지를 띄울 필요도 없이 그냥 리턴만 시켜야겠네요?
    if(!Context::get('is_logged')) return ;
  • ? profile
    if(!Context::get('is_logged')) return ;

    이렇게 해보세요.
  • profile profile
    return 또는 return $this->makeObject();

    이렇게 두개중에 끌리느거 쓰면됩니다.

    return $this->makeObject는 return new BaseObject()랑 같으니까 이걸 써두되고요. 트리거에서는 둘다 같은 효과로 종료되는 것입니다.
  • profile profile
    근본적인 에러는 해결되지 않은 상태이므로 아래 제 댓글의 항목의 코드를 수정먼저 진행하셔야 합니다.

    웹지기님이 알려주신 코드는 -1항목과 메세지 항목을 비우신다면 그대로 유지해도 관계 없습니다.

    Too few arguments to function 에러자체가 인자로 넘기는 갯수가 부족해서 생기는 php7.1쯤 부터 생겨난 에러입니다.
  • profile profile
    네. 인자문제 발생에 초점을 둔 해결이어서 그냥 굳이 makeObject(); 를 함수를 호출해서 문제를 일으킬 필요 없어 보였습니다.
  • profile
    https://github.com/wincomi/xe-module-coupon/blob/master/coupon.class.php#L70

    여기에

    public function makeObject($code = 0, $msg = 'success')

    으로 수정하시면 됩니다.