여는 글


 

저번에 localhost 접속하기 까지 진행했습니다.

 

사실 이번엔 페이지 라우팅(url?)에 대한 이해부터 하고 싶었습니다.

 

서브 페이지로 이동하려면 경로가 어떻게 되는 지 도저히 눈에 안 보였기 때문인데 Node.js, Django를 써봤는데 이렇게까지 페이지 라우팅이 뭔지 모르겠는 프레임워크는 또 처음이네요...

(Django는 url setting 설정 파일이 있거나 Node.js는 그냥 router 파일에 경로만 추가해주면 됐었는데..)

 

어쩔 수 없이 index 페이지에서 DB값을 출력해보기로 했습니다.

 

그래서 일단 이건 다음 시간으로 넘기고 DB 연결부터 하게 됐습니다.

 

 

DB 연결


 

그 전에!! CI는 초기에는 배포모드로 되어있습니다.

 

다른 프레임워크는 배포 전에 따로 설정해주지 않는 이상 개발자모드로 되어있는데 에러 생겨도 Woops! 페이지만 뜨고 원인을 안 알려줘서 당황했었기 때문에 이 설정부터 해보겠습니다.

 

https://itadventure.tistory.com/368 

 

코드이그나이터4 개발자 모드 활성화하기

코드이그나이터4에서는 기본적으로 약간만 오류가 발생해도 Whoops! 라는 안내 멘트와 함께 오류 결과를 알려주지 않습니다. 이는 해킹을 방지하기 위한 시스템적인 조치인데요. 해커들이 사이트

itadventure.tistory.com

 

 

App/Config/Database.php

<?php

namespace Config;

use CodeIgniter\Database\Config;

/**
 * Database Configuration
 */
class Database extends Config
{
    /**
     * The directory that holds the Migrations
     * and Seeds directories.
     *
     * @var string
     */
    public $filesPath = APPPATH . 'Database' . DIRECTORY_SEPARATOR;

    /**
     * Lets you choose which connection group to
     * use if no other is specified.
     *
     * @var string
     */
    public $defaultGroup = 'default';

    /**
     * The default database connection.
     *
     * @var array
     */
    public $default = [
        'DSN'      => '',
        'hostname' => 'localhost',
        'username' => 'DBMS 유저명',
        'password' => 'DBMS 비밀번호',
        'database' => 'DB 명',
        'DBDriver' => 'MySQLi',
        'DBPrefix' => '',
        'pConnect' => false,
        'DBDebug'  => (ENVIRONMENT !== 'production'),
        'charset'  => 'utf8',
        'DBCollat' => 'utf8_general_ci',
        'swapPre'  => '',
        'encrypt'  => false,
        'compress' => false,
        'strictOn' => false,
        'failover' => [],
        'port'     => 3307, // 기본포트는 3306이나 저의 경우 다른 DB가 해당 포트를 사용중이므로 3307로 지정했습니다.
    ];

    /**
     * This database connection is used when
     * running PHPUnit database tests.
     *
     * @var array
     */
    public $tests = [
        'DSN'      => '',
        'hostname' => '127.0.0.1',
        'username' => '',
        'password' => '',
        'database' => ':memory:',
        'DBDriver' => 'SQLite3',
        'DBPrefix' => 'db_',  // Needed to ensure we're working correctly with prefixes live. DO NOT REMOVE FOR CI DEVS
        'pConnect' => false,
        'DBDebug'  => (ENVIRONMENT !== 'production'),
        'charset'  => 'utf8',
        'DBCollat' => 'utf8_general_ci',
        'swapPre'  => '',
        'encrypt'  => false,
        'compress' => false,
        'strictOn' => false,
        'failover' => [],
        'port'     => 3306,
    ];

    public function __construct()
    {
        parent::__construct();

        // Ensure that we always set the database group to 'tests' if
        // we are currently running an automated test suite, so that
        // we don't overwrite live data on accident.
        if (ENVIRONMENT === 'testing') {
            $this->defaultGroup = 'tests';
        }
    }
}

 

다른 건 건드릴 필요 없었고 default에 한글로 기재해 놓은 부분만 수정하면 됩니다.

 

 

 

App/Controllers/Home.php

<?php


namespace App\Controllers;

use App\Models\sample_model;



class Home extends BaseController
{

    
     /* public function __construct(){ 
        // parent::__construct(); // BaseController 상속 받을 때는 이 코드 사용 안함!
        $this->load->model('show_db'); // ci3 버전 모델 로드 코드
    } */


    public function index()
    {
        $sampleModel = model(sample_model::class);
        $db      = \Config\Database::connect();
        $builder = $db->table('cidb');
        $query   = $builder->get();  // Produces: SELECT * FROM mytable
        foreach ($query->getResult() as $row) {
            echo $row->id, "\n"; 
            echo $row->title;

        }
        return view('show_db'); // App/Views/show_db.php
    }
}

 

위 코드를 작성하기까지 꽤 구글링을 했었던 터라...

빌더는 아래 사이트 참조!

http://ci4doc.cikorea.net/database/query_builder.html

 

쿼리 빌더 클래스 — CodeIgniter 4.1.9 documentation

Insert된 행의 수, 실패시 false

ci4doc.cikorea.net

 

그리고 모델 load 하는데도 ci3이랑 4랑 문법 자체가 달라서 ci3 코드보다가 에러 뱉은 적이 한 두번이 아닙니다. ㅜㅜ (주석에 보면 있어요)

 

구글링해보면 ci3 자료만 많고 ci4가 없어서 꽤 어렵다고 느끼긴 했고 사실 저 위의 코드가 맞는 지는 모르겠습니다.

(약간 코드 때려놓고 돌아가긴 하네, 하는 느낌이라 불필요한 코드가 섞여있을 수도 있습니다.)

 

이제 마지막으로 아래 코드를 작성해주면 됩니다.

 

App/Models/sample_model.php

<?php

namespace App\Models;


use CodeIgniter\Model;

class SampleModel extends Model {
    protected $primaryKey = "title";
}

?>

 

 

 

닫는 글


 

이렇게 하니까 db 값도 화면에 잘 나오고 하긴 하는데 여전히 이해 안되는 url 규칙 때문에 찝찝해서 다음 번엔 꼭 접속 경로를 파악하는 걸로 하겠습니다.

 

영원히 index 페이지에서만 놀 수는 없으니까요..

'Codeigniter4' 카테고리의 다른 글

[PHP8, Codeigniter4] VSCODE 환경 세팅하기  (0) 2022.05.05

 

 

여는 글


 

Codeigniter로 개발해야 할 일이 생겨 노트북에 개발 환경을 세팅해야 합니다.

 

다른 컴에도 깔 게 될 일이 생길 지 모르니 정리해두는 차원에서 작성해보겠습니다.

(환경 세팅은 처음에 해놓고 안 하니까 나중에는 기억이 안나서...)

 

 

 

 

환경세팅


 

 

1. https://ssimplay.tistory.com/557

 

[vs code] 비주얼 스튜디오 코드 php 개발환경 설정하기

vs code에서 php 작업을 하려면 약간의 준비가 필요한데요. 차근차근 같이 해봅쉬다~! 1. php 설치 [coding/etc] - [PHP] php 설치하기 (윈도우) [PHP] php 설치하기 (윈도우) 오늘은 php를 설치해보겠습니다. 1...

ssimplay.tistory.com

 

이 포스팅에서 PHP 설치 방법 링크도 타고 가서 그대로 따라하면 됩니다.

 

 

2. 환경변수 설정

 

환경변수에서 C:\Bitnami\wampstack-8.1.5-0\php (버전 별로 상이) 추가해주기

 

참고 : https://velog.io/@kangpungyun/%EC%BD%94%EB%93%9C%EC%9D%B4%EA%B7%B8%EB%82%98%EC%9D%B4%ED%84%B04-%EC%84%A4%EC%B9%98-%EC%A4%91-%EC%97%90%EB%9F%AC

 

 

3. Codeigniter4 설치하기

 

구글에 많이 나와있으므로 생략하지만 공식 홈페이지에서 그냥 다운로드 받으면 됩니다.

 

그러면 C:\Users\유저명\Downloads\codeigniter4-CodeIgniter4-v4.1.9-0-g202f41a

 

이렇게 codeigniter4 파일이 생깁니다.

 

 

4. VSCODE에 디렉터리 가져오기

 

보통 프레임워크쓰면 기본 파일 구조가 생성되어 있는 디렉터리에서 작업하니까 디렉터리를 옮겨야 합니다.

 

3.에서 다운 받은 codeigniter4을 들어가보면 codeigniter4-CodeIgniter4-v4.1.9-0-g202f41a/codeigniter4-CodeIgniter4-v4.1.9-0-g202f41a 이런 구조인데 이 파일을 vscode에 넣으면 됩니다.

 

하위에 app/controllers ... 등 익숙한 mvc 구조의 파일이 보이게 됩니다.

 

 

5. vscode terminal에서 php spark serve 치면 localhost:8080으로 접속하라고 뜨면 성공!

(php 인식 안된다는 식의 에러뜨면 환경변수 잘못 설정한 겁니다.)

 

참고 : http://ci4doc.cikorea.net/installation/running.html

 

 

닫는 글


 

저는 Django 경험이 있어서 그런지 디렉터리 구조는 생각보다 이해가 쉽네요.

 

PHP는 개발 해봐야 알겠지만 생각보다 코드가 직관적이라서 쉬운 듯? 어려운 듯? 하고... 

 

해당 카테고리는 배포까지 보고 깊게 개발할 목적이 아닌 localhost환경에서 기본 CRUD를 익히기 위한 아주 기본적인 개발 기록만 남길 예정입니다.

(간단한 페이지 2~3개, db 연동+사용 해보기 정도)

 

코드이그나이터 구조 이해를 위한 공부 카테고리입니다. 

 

 

 

'Codeigniter4' 카테고리의 다른 글

[PHP8, Codeigniter4] MariaDB 연결 + DB 출력  (0) 2022.05.08