めも
・APP
/home/…/app/
・APPLIBS
/home/…/app/Lib/
・CAKE_VERSION
例)2.4.2
・WWW_ROOT
/home/…/app/webroot/
・CSS
/home/…/app/webroot/css/
・IMAGES
/home/…/app/webroot/img/
・JS
/home/…/app/webroot/js/
めも
・APP
/home/…/app/
・APPLIBS
/home/…/app/Lib/
・CAKE_VERSION
例)2.4.2
・WWW_ROOT
/home/…/app/webroot/
・CSS
/home/…/app/webroot/css/
・IMAGES
/home/…/app/webroot/img/
・JS
/home/…/app/webroot/js/
めも。
コントローラーにて。
$this->response->type('application/json'); $this->response->send();
めも。
App::uses('Folder', 'Utility'); $folder = new Folder('/path/to/dir'); $contents = $folder->read();
返却される配列の[0]番目にディレクトリが格納され、[1]番目にファイルリストが格納される。
めも。
コントローラーにて。
$this->response->file('/path/to/file'); $this->response->send();
Model::create()を行った際、プライマリーキーを除いた全てのカラムに設定されている初期値がセットされる。
そのためレコード更新の時、初期値が設定されているカラムの値をセットせずにModel::create()、Model::save()を行うと、意図した動作にならない場合があるので注意。
具体例として、statusなどのカラムを初期値1で設定しており、どこかのタイミングで2に書き換わっていたとする。そしてそのレコードを編集する際にステータスも「2」であると明示的にセットしない限り、修正完了した時点でステータスは1に戻ってしまう。
ということである。
IDさえセットしてしまえば、他の渡されなかった値はDBのレコードをそのまま維持してくれると勘違いしていたが違った模様。
ちなみにコアコードは下記のようになっている。
public function create($data = array(), $filterKey = false) { $defaults = array(); $this->id = false; $this->data = array(); $this->validationErrors = array(); if ($data !== null && $data !== false) { $schema = (array)$this->schema(); foreach ($schema as $field => $properties) { if ($this->primaryKey !== $field && isset($properties['default']) && $properties['default'] !== '') { $defaults[$field] = $properties['default']; } } $this->set($defaults); $this->set($data); } if ($filterKey) { $this->set($this->primaryKey, false); } return $this->data; }
10行目でおもいっきり初期値セットしてるがな。
めも。
特殊なSQLをフレームワーク側に組み立てさせるのがめんどくさい場合とかあるよね。
Model::query()メソッドを用いる。
モデルクラスにて。
$sql = '任意のSQL'; $res = $this->query($sql);
まぁモデルのメソッドを使って生成出来ないSQLは滅多に存在しないのでなるべくなら規則に従ったほうが良い。
めも。
1, まずは下記URLからソースをダウンロード。
https://github.com/slywalker/cakephp-plugin-boost_cake
2, ファイルを解凍後、プラグインが梱包されたフォルダ名を「BoostCake」に変更し下記ディレクトリに格納。
app/Plugin/
3, 「app/Config/bootstrap.php」に下記を追記。
CakePlugin::load('BoostCake');
4, 「app/Controller/AppController.php」に下記を追記。
class AppController extends Controller { public $helpers = array( 'Session', 'Html' => array('className' => 'BoostCake.BoostCakeHtml'), 'Form' => array('className' => 'BoostCake.BoostCakeForm'), 'Paginator' => array('className' => 'BoostCake.BoostCakePaginator') ); }
5, レイアウトファイルのhead要素内で下記ファイルを読み込む。
echo $this->Html->script('//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js')."\n"; echo $this->Html->css('bootstrap')."\n"; echo $this->Html->script('bootstrap')."\n";
6, 以上で導入は完了。使い方は書きURLを参照されたし。
http://slywalker.github.io/cakephp-plugin-boost_cake/bootstrap3.html
めも。
$this->{$this->modelClass}->find('all', array( 'conditions' => array( 'NOT' => array( $this->modelClass.'.id' => array(1, 2, 3, 4) ) ) ));
こんな感じ。