Extra Form
PHP PHP 7.4
CMS Rhymix 2.1

안녕하세요.

 

제가 개별로 생성한 php 페이지는 외부페이지에서는 사용이 가능하지만 그걸 레이아웃 일부 일부나 메인페이지에 위젯화 해서  넣고싶은 생각이 있습니다.

 

손으로 인크루드 하는게 좋을지 위젯을 만들면 좋을지 고민하다가 위젯을 만들어 보려고 합니다.

 

혹시 db에 접근해서 데이터를 받아오는 샘플이 될만한 위젯이 있을까요?

 

우려 되는 사항은 xe_ rx_로 시작하는 db가 아닌

제가 임의로 생성해둔 테이블에 접근하는것이라 조금은 다를 것 같아서요.

 

일반적인 php 에서는 id pw host 값 주고 접속하는데 이걸 위젯으로 만들어보고자 하니

라이믹스로 통해서 접속한다면 이런과정을 생략해도 db 접속 config 파일은 이미 불러와지고 있을테니 굳이 넣지 않아도 될것 같아서요.

 

 

감사합니다.

  • profile

    라이믹스에서 설정된 접두사가 붙어 있는 테이블이 아니라면

    위젯이든 모듈이든 별 차이가 없습니다. 별도의 쿼리로 처리하는 수밖에요.

    다행히, DB 아이디 비번을 건드릴 필요는 없습니다.

    코어에서 이미 DB에 접속해 놓았으니, 그 커넥션에 임의로 쿼리를 넣기만 하면 됩니다.

     

    // raw DB 커넥션 가져오기

    $pdo = DB::getInstance()->getHandle();

     

    // prepared statement 방식으로 쿼리

    $stmt = $pdo->prepare('SELECT * FROM 내테이블 WHERE aaa = ? AND bbb = ?');

    $stmt->execute(['물음표 자리에 넣을 변수1', '변수2']);

     

    // 결과 받아와서 처리

    $result = $stmt->fetchAll();

    foreach ($result as $row) {

        echo $row->aaa;

        echo $row->bbb;

    }

     

    참고로, xe_ rx_ 접두사가 붙어 있는 테이블에 쿼리를 쓰는 경우에는 훨씬 간단합니다.

     

    // raw DB 커넥션이 아니라 라이믹스에서 제공하는 DB 클래스임

    $oDB = DB::getInstance();

    $stmt = $oDB->query('SELECT * FROM 접두사_제외한_테이블명 WHERE aaa = ? AND bbb = ?', ['변수1', '변수2']);

    $result = $stmt->fetchAll();

     

    이렇게 하면 접두사도 자동으로 붙여 주고, prepare/execute도 한 방에 처리해 주거든요.

  • profile
    xml 쿼리를 말씀하시는건가요?

    $output = executeQueryArray('widgets.위젯명.getDocumentsForPlanner_all', $args);
    위젯에 queries 폴더를 만들어서 xml 쿼리를 작성하시면 됩니다.
    https://xe1.xpressengine.com/index.php?mid=download&package_id=22753688