CakePHP3 공부회 @ 후쿠오카 vol.2 핸즈온 자료

14152 단어 cakephp3

목차


  • 목표
  • CakePHP 3 설치
  • CakePHP3 초기 설정
  • 마이그레이션
  • Bake
  • 등록, 편집, 삭제를 해보자.
  • 로그인 화면 만들기

  • 1. 목표



    CakePHP3의 Bake에서 쉽게 프로젝트를 만들 수 있습니다.
    만져보세요.

    2. CakePHP 3 설치



    우선 CakePHP3 설치해 봅시다!

    시스템 요구 사항



    설치하기 전에 CakePHP3의 시스템 요구 사항을 알아보세요!
  • HTTP 서버 (예 : Apache. mod_rewrite가 권장되지만 필수는 아닙니다)
  • PHP 5.6 이상 (PHP 7 포함)
  • PHP mbstring 확장
  • PHP intl 확장
  • DB(반드시 필요하지는 않음)
  • MySQL (5.1.10 이상)
  • PostgreSQL
  • Microsoft SQL Server (2008 이상)
  • SQLite 3


  • 이번에는 MySQL or PostgreSQL 가정
    * 내장 드라이버는 모두 PDO가 필요합니다. 올바른 PDO 확장 모듈이 설치되어 있는지 확인하십시오.

    CakePHP 설치



    시작하기 전에 PHP 버전이 PHP 5.6 이상인지 확인하십시오.

    참고 : htp // 보오 k. 곱셈 php. 오 rg / 3.0 / 그럼 / 응 s 치치 온. HTML
    *叩く場所はどこでもよい
    command
        php -v
    

    CakePHP3 설치


  • CakePHP의 공식 설치 방법으로 종속성 관리 도구 Composer를 사용하십시오.
  • command
        cd /var/www/html/
        curl -s https://getcomposer.org/installer | php
    
    output
    
    All settings correct for using Composer
    Downloading 1.0.0...
    
    Composer successfully installed to: /var/www/html/htdocs/hands-on/composer.phar
    Use it: php composer.phar
    
  • composer.phar 다운로드 확인
  • command
        cd /var/www/html/
        ls -la
    
    output
        composer.phar
    

    CakePHP3 프로젝트 만들기


    command
        cd /var/www/html/
        php composer.phar create-project --prefer-dist cakephp/app {{project name}}
    
    Writing lock file
    Generating autoload files
    > Cake\Composer\Installer\PluginInstaller::postAutoloadDump
    > App\Console\Installer::postInstall
    Created `config/app.php` file
    Set Folder Permissions ? (Default to Y) [Y,n]? Y
    
    URL
        http://{{自分のIP}}/{{project name}}/
    



  • 설치 확인

  • 기본적으로 다음과 같은 구성의 Project를 할 수 있습니다.
    /{{project name}}
        /bin // 実行可能なCakeコンソールが入ります。
        /config // CakePHP が使用する(数個の)設定ファイルが入る場所です。 データベース接続の詳細、ブートストラップ、コアの設定ファイルなどがここに入ります。
        /logs
        /plugins // あなたのアプリケーションが使うプラグインが入ります。
        /src // 作成するプログラムが入る場所です。 あなたのアプリケーションのファイルはここに入れます。
        /tests // あなたのアプリケーションのテストケースが入る場所です。
        /tmp // CakePHP の一時的なデータが入る場所です。
        /vendor // CakePHP と他のアプリケーションの依存ライブラリが入る場所です。 このフォルダの中のファイルを勝手に編集 しない と誓ってください。 これはコア (心臓部分) で、ここをいじってしまうと、私たちはもう助けを差し伸べることができません。
        /webroot // ディレクトリはあなたのアプリケーションのパブリックドキュメントルートです。
        .editorconfig
        .gitignore
        .htaccess
        .travis.yml
        composer.json
        index.php
        phpunit.xml.dist
        README.md
    

    만든 Project에 액세스할 수 있는 것을 확인할 수 있습니다.
    여기까지가 CakePHP3의 설치 방법입니다.
    다음에는 CakePHP3 초기 설정을 해봅시다.

    2. CakePHP3 초기 설정



    데이터베이스 작성



    DB를 만들어 보자.
    * postgresの場合
    command
        cd /var/www/html/
        psql -U postgres
        postgres=# create database {{DB name}};
        CREATE DATABASE
    
    * mysqlの場合
    command
        cd /var/www/html/
        mysql -u root -p
        create database {{DB name}};
    

    데이터베이스 설정



    지금 만든 DB를 CakePHP3로 설정합시다.
    command
        vim /var/www/html/{{project name}}/app/config/app.php
    
    * /var/www/html/{{project name}}/app/config/app.php
    220行目
    
    vim
        // Postgresの方は、testのdriverも書き換えてください。
        'Datasources' => [
                'default' => [
                    'className' => 'Cake\Database\Connection',
                    // 'driver' => 'Cake\Database\Driver\Mysql',
                    'driver' => 'Cake\Database\Driver\Postgres',
                    'persistent' => false,
                    'host' => 'localhost',
                    /**
                     * CakePHP will use the default DB port based on the driver selected
                     * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
                     * the following line and set the port accordingly
                     */
                    //'port' => 'non_standard_port_number',
                    'username' => '{username}', // 231行
                    'password' => '{password}', // 232行
                    'database' => '{{DB name}}', // 233行
                    'encoding' => 'utf8',
                    'timezone' => 'UTC',
                    'flags' => [],
                    'cacheMetadata' => true,
                    'log' => false,
                ]
        ]
    

    캐시 파일 사용 권한 설정


    * /var/www/html/{{project name}}/app/config/app.php
    85行目
    
        'Cache' => [
            'default' => [
                'className' => 'File',
                'path' => CACHE,
                'url' => env('CACHE_DEFAULT_URL', null),
            ],
    
            /**
             * Configure the cache used for general framework caching.
             * Translation cache files are stored with this configuration.
             * Duration will be set to '+1 year' in bootstrap.php when debug = false
             */
            '_cake_core_' => [ 
                'className' => 'File',
                'prefix' => 'myapp_cake_core_',
                'path' => CACHE . 'persistent/',
                'serialize' => true,
                'duration' => '+2 minutes',
                'url' => env('CACHE_CAKECORE_URL', null),
                'mask' => 0666, // 104行
            ],
    
            /**
             * Configure the cache for model and datasource caches. This cache
             * configuration is used to store schema descriptions, and table listings
             * in connections.
             * Duration will be set to '+1 year' in bootstrap.php when debug = false
             */
            '_cake_model_' => [
                'className' => 'File',
                'prefix' => 'myapp_cake_model_',
                'path' => CACHE . 'models/',
                'serialize' => true,
                'duration' => '+2 minutes',
                'url' => env('CACHE_CAKEMODEL_URL', null),
                'mask' => 0666, // 120行
            ],
        ],
    

    3. 마이그레이션



    정보를 저장하기 위한 테이블의 migration 파일을 생성해 봅시다.

    참고 : htp // 보오 k. 곱셈 php. rg/3.0/그럼/미g라치온 s. HTML

    마이그레이션 파일 작성


    * /var/www/html/{{project name}}
    
    command
        // accounts テーブル作成
        bin/cake bake migration CreateUsers name:text description:text username:text password:text created modified
    

    시드 파일 작성



    Login 사용자의 초기 값을 설정하는 시드 파일을 작성해 봅시다.
    * /var/www/html/{{project name}}
    
    command
        bin/cake bake seed Users
    

    시드 파일 수정
    * /var/www/html/{{project name}}
    
    command
        vim config/Seeds/UsersSeed.php
    
    * /var/www/html/{{project name}}/config/Seeds/UsersSeed.php
    3行目
    
    vim
        use Cake\Auth\DefaultPasswordHasher;  
    
    * /var/www/html/{{project name}}/config/Seeds/UsersSeed.php
    19行目
    
    vim
        public function run()
        {
            $data = [
              [
                  'name'            => 'AccountA',
                  'description'     => '',
                  'username'        => 'admin',
                  'password'        => (new DefaultPasswordHasher)->hash('admin'),
                  'created'         => date('Y-m-d H:i:s'),
                  'modified'        => date('Y-m-d H:i:s'),
              ]
            ];
        }
    

    마이그레이션 실행



    설정한 migration 파일을 실행해 봅시다.
    * /var/www/html/{{project name}}
    
    command
        bin/cake migrations migrate
    

    시드 실행


    * /var/www/html/{{project name}}
    
    command
        bin/cake migrations seed --seed UsersSeed
    

    5. Bake



    기본 애플리케이션을 신속하게 생성하기 위해 bake 콘솔 애플리케이션을 사용할 수 있습니다.
    * /var/www/html/{{project name}}
    
    bin/cake bake all users
    
  • 확인
  • 一覧 : http://{{自分のIP}}/{{project name}}/users
    登録 : http://{{自分のIP}}/{{project name}}/users/add
    編集 : http://{{自分のIP}}/{{project name}}/users/edit/{{id}}
    

    6. 등록, 편집, 삭제를 해보자



    목록


    URL
    http://{{自分のIP}}/{{project name}}/users
    



    등록


    URL
    http://{{自分のIP}}/{{project name}}/users/add
    



    상세


    URL
    http://{{自分のIP}}/{{project name}}/users/view/{{id}}
    



    편집


    URL
    http://{{自分のIP}}/{{project name}}/users/edit/{{id}}
    



    삭제



    목록 화면에 있는 delete를 눌러 봅시다!



    7. 로그인 및 로그아웃 기능



    Auth



    CakePHP에는 인증 기능등을 구현하기 쉽게 하는 Auth 컴포넷이 표준으로 사용할 수 있게 되어 있습니다.
    먼저 Auth를 설정합시다.
  • src/Controller/AppController.php 수정
  • command
        vim src/Controller/AppController.php
    
    vim
        public function initialize()
        {
            parent::initialize();
    
            $this->loadComponent('RequestHandler'); // RequestHandlerコンポーネント。入力されたデータの取得などに使用
            $this->loadComponent('Flash'); // Flashコンポーネント。エラーメッセージの表示などに使用
            $this->loadComponent('Auth', [ // Authコンポーネントの読み込み
                'authenticate' => [
                    'Form' => [ // 認証の種類を指定。Form,Basic,Digestが使える。デフォルトはForm
                        // 'userModel' => 'Users', // デフォルトでUsersになっている
                        'fields' => [ // ユーザー名とパスワードに使うカラムの指定。省略した場合はusernameとpasswordになる
                            'username' => 'username', // ユーザー名のカラムを指定
                            'password' => 'password' //パスワードに使うカラムを指定
                        ]
                    ]
                ],
                'loginRedirect' => [ // ログイン後に遷移するアクションを指定
                    'controller' => 'Users',
                    'action' => 'index'
                ],
                'loginAction' => [ // ログアウト後に遷移するアクションを指定
                    'controller' => 'Users',
                    'action' => 'login',
                ],
            ]);
        }
    

    로그인 화면 및 로그아웃 기능 만들기



    먼저 UsersController에 login 및 logout action을 추가합니다.
    command
        vim src/Controller/AccountsController.php
    
    vim
        public function login()
        {
            if ($this->request->is('post')) {
                $user = $this->Auth->identify();
                if ($user) {
                    $this->Auth->setUser($user);
                    return $this->redirect($this->Auth->redirectUrl());
                }
                $this->Flash->error(__('Invalid username or password, try again'));
            }
        }
    
        public function logout()
        {
            return $this->redirect($this->Auth->logout());
        }
    

    src/Template/Accounts/login.ctp 만들기
    command
        vim src/Template/Accounts/login.ctp
    
    vim
        <!-- File: src/Template/Users/login.ctp -->
        <div class="users form">
            <?= $this->Flash->render('auth') ?>
            <?= $this->Form->create() ?>
                <fieldset>
                    <legend><?= __('Please enter your username and password') ?></legend>
                    <?= $this->Form->input('username') ?>
                    <?= $this->Form->input('password') ?>
                </fieldset>
            <?= $this->Form->button(__('Login')); ?>
            <?= $this->Form->end() ?>
        </div>
    

    Password 암호화



    CakePHP3에서는 Getter, Setter라는 개념이 생겼습니다.
    Password 암호화는 Setter를 사용하여 설정해 봅시다.
    command
        vim src/Model/Entity/Account.php 
    
    vim
        use Cake\Auth\DefaultPasswordHasher;
    
    vim
        protected function _setPassword($password)
        {
            return (new DefaultPasswordHasher)->hash($password);
        }
    

    좋은 웹페이지 즐겨찾기