CakePHP3 공부회 @ 후쿠오카 vol.2 핸즈온 자료
14152 단어 cakephp3
목차
1. 목표
CakePHP3의 Bake에서 쉽게 프로젝트를 만들 수 있습니다.
만져보세요.
2. CakePHP 3 설치
우선 CakePHP3 설치해 봅시다!
시스템 요구 사항
설치하기 전에 CakePHP3의 시스템 요구 사항을 알아보세요!
이번에는 MySQL or PostgreSQL 가정
* 내장 드라이버는 모두 PDO가 필요합니다. 올바른 PDO 확장 모듈이 설치되어 있는지 확인하십시오.
CakePHP 설치
시작하기 전에 PHP 버전이 PHP 5.6 이상인지 확인하십시오.
참고 : htp // 보오 k. 곱셈 php. 오 rg / 3.0 / 그럼 / 응 s 치치 온. HTML
*叩く場所はどこでもよい
command
php -v
CakePHP3 설치
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
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를 설정합시다.
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);
}
Reference
이 문제에 관하여(CakePHP3 공부회 @ 후쿠오카 vol.2 핸즈온 자료), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/JoJeongMin/items/9d17788667f4d9674649텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)