Cakephpで諸事情によりテーブルを切り替えるには
テストのコードですが
public function setUp() {
parent::setUp();
$this->Plan = ClassRegistry::init('Plan');
$this->Plan->setSource('test_plan');
}
というふうに
Model->setSource
で切り替えられました
ひびのきろく
Cakephpで諸事情によりテーブルを切り替えるには
テストのコードですが
public function setUp() {
parent::setUp();
$this->Plan = ClassRegistry::init('Plan');
$this->Plan->setSource('test_plan');
}
というふうに
Model->setSource
で切り替えられました
CakephpのテストでCakeRequestにアクセスする方法をメモ
Cakephp 2.5.3を使っています
まず、こんなコントローラーがあって
class SomethingController extends AppController {
public function doSomething() {
$data = ['aaa', 'bbb'];
$this->request->data = $data;
}
}
テストはこう
App::uses('SomethingController ', 'Controller');
class SomethingController extends ControllerTestCase {
public function testDoSomething() {
$result = $this->testAction(
'/Something/doSomething',
['return' => 'vars']
);
$expected = ['aaa', 'bbb'];
$this->assertEquals($expected, $this->controller->request->data));
}
}
$this->controller->request
でCakeRequestにアクセスできました
シンプルな認証と承認のアプリケーション — CakePHP Cookbook 2.x ドキュメント
のチュートリアルをやってみました
環境などは
cakephp cookbook のチュートリアルをcomposerを使ってやってみた
でやったのでこの続きです
http://book.cakephp.org/2.0/ja/tutorials-and-examples/blog-auth-example/auth.html#id2
のsqlをmysqlに流して、usersテーブルを作成します
bakeでソースコードを用意
$ Console/cake bake all
Welcome to CakePHP v2.5.8 Console
---------------------------------------------------------------
App : cake-tutorial
Path: /vagrant/cake-tutorial/
---------------------------------------------------------------
Bake All
---------------------------------------------------------------
Possible Models based on your current database:
1. Post
2. User
Enter a number from the list above,
type in the name of another model, or 'q' to exit
[q] > 2
PHPUnit is not installed. Do you want to bake unit test files anyway? (y/n)
[y] > y
Bake All complete
これだけで、
http://localhost/users/
にアクセスすると、ユーザー一覧が表示され、追加も編集も削除もできます
$ vim Controller/AppController.php
でAuthとSessionのコンポーネントを用意します
Sessionは、画面にエラーメッセージを出すのに使っていて
Authはログイン認証で使っているようです
Authは認証 — CakePHP Cookbook 2.x ドキュメントに詳しく書いてあります
$this->Auth->allow(’index’)
ってなに?とか思ったら認証 — CakePHP Cookbook 2.x ドキュメントを見ましょう
AppControllerに
public function beforeFilter() {
$this->Auth->allow('index', 'view');
}
を書くと、beforeFilterが画面アクセス時に最初にうごいて、Allow->allowで指定してあるアクションは認証を許す(ログイン不要)となります
といった感じでマニュアル見ながら進めると理解深まると思います
cakephp cookbookのブログチュートリアルをcomposerでやってみました
composer、ウェブサーバー、mysqlは構築済みです
ウェブサーバーの公開ディレクトリなどcakephpを入れたいディレクトリへ移動して
$ composer init
ででてくる指示に従い、依存関係はすべてnoにしてみました
{
"name": "sample/cake-tutorial",
"authors": [
{
"name": "username",
"email": "sample@sample.co.jp"
}
],
"require": {}
}
こんな composer.json ができます
そのままだと小文字のvendorディレクトリにいろいろインストールされます
cakephpはVendorディレクトリなので、最初を大文字に変更
{
"name": "sample/cake-tutorial",
"authors": [
{
"name": "username",
"email": "sample@sample.co.jp"
}
],
"config": {
"vendor-dir": "Vendor"
},
"require": {}
}
cakephpをいれます
$ composer require “cakephp/cakphp”:”2.5.*”
はいったら、bakeでプロジェクト作成
直下にしました
$ Vendor/bin/cake bake project .
appディレクトリ内にしたかったら
$ Vendor/bin/cake bake project app
ですね
webroot/index.php と webroot/test.phpにある
CAKE_CORE_INCLUDE_PATHの修正が必要だったらしますが直下につくればいらないはず
ウェブサーバーを起動してアクセス
こんな感じにでます
パーミッションで怒られたら
http://book.cakephp.org/2.0/ja/getting-started.html#tmp
で対応
データベースを作成
mysqlにログイン
$ mysql -u root -p
(パスワード入力)
mysql> create database cakephptutorial;
mysql> grant all privileges on . to ‘caketutorialuser’@’%’ identified by ‘password’
mysql> flush privileges;
mysql> exit;
とかいう感じで、データベース名とかユーザー名は自分好みで作ります
http://book.cakephp.org/2.0/ja/getting-started.html#id3
のSQL文を create.sql とかテキストファイルに保存して
$ mysql -u root -p cakephptutorial < create.sql
で、SQL文を流してデータベース出来上がり
cakephpのデータベース設定をします
テンプレートがあるのでコピー
$ cp Config/database.php.default Config/database.php
データベース名とかユーザー名とかを作ったものに合わせます
$ vim Config/database.php
データベースのエラーも来ました
(DebugKitは置いといて)
これでcakephpの環境できあがり
あとは続いて書くだけです
http://book.cakephp.org/2.0/ja/getting-started.html#id6