自分のメモ用なので、書き方が雑ですが悪しからず。
●array
() → []
●idからそのデータ丸ごと取得する
$record = $this->Model->findById
↓
$record = $this->Model->get($id);
●フォームのデータを取得
$this->request->data;
↓
$this->request->getData();
●カウントアップ処理
$this->Model->updateAll(
[
'Model.field'=>'`Model`.`field` + 1',
],
[
'Model.id'=>$data['Model2']['Model_id'],
]
);
↓
use Cake\Event\EventInterface;
$expression = new QueryExpression('field + 1');
$this->User->updateAll(
[ 'field' => $expression ],
[ 'id' => $Model2['Model_id'] ]
);
●ログイン判定
if ($this->getRequest()->getAttribute('identity')->loggedIn()){
}
↓
if ($this->Authentication->getIdentity()){
}
●認証済みユーザのidを取得
AuthComponent::user('user_id')
↓
# 以下のアクションを作った。
$this->getAuthid()
# 実態は以下
-----
$identity = $this->getRequest()->getAttribute('identity');
if ($identity) {
$myid = (string)$identity->get('id'); // strval と同じ意味
} else {
// 未ログイン時の処理
$myid = null;
}
-----
●各controllerでのmodelの定義の仕方
public $users = ['Models'];
↓
public $Models = null;
public Initialize {
$this->Models = $this->loadModel('Models');
}
●ログイン不要のactionを指定する方法
$this->getRequest()->getAttribute('identity')->allow('detail','index','archive','search');
↓
$this->Authentication->allowUnauthenticated(['index', 'detail', 'archive', 'search']);
●beforeFilterの宣言の仕方
public function beforeFilter(){
↓
use Cake\Event\EventInterface;
public function beforeFilter(EventInterface $event){
※ parent::beforeFilter() も parent::beforeFilter($event) とする。
●configの値を取得する処理
cakephp2と処理は変わってないとのことだが、
・ソースのトップ(<?php の真下ぐらい)に以下を記載する。
use Cake\Core\Configure;
・読み込む時は
Configure::read("parameter")
でよい。
●パンくずりすと
$this->Html->addCrumb('サブページ',['action'=>'index']);
$this->Html->addCrumb($this->Text->truncate($data['text'],40), null);
echo $this->Html->getCrumbList(
[
'class'=>'uk-breadcrumb uk-hidden-small',
'firstClass'=>false,
'lastClass'=>"uk-active"],
[
'text'=>'ホーム'
]);
↓
$this->Breadcrumbs->prepend('ホーム', ['controller' => 'Pages', 'action' => 'display']);
$this->Breadcrumbs->add('サブページ');
echo $this->Breadcrumbs->render(
['class' => 'uk-breadcrumb uk-hidden-small']
);
●viewでの日時の表示
$createdTime = new FrozenTime($model['created']);
echo $createdTime->format("Y-m-d H:i");
↓
$model['created']->format("Y-m-d H:i");
●idを指定して1レコード取得する方法
$this->Models->id = $id;
$d = $this->Models->read();
↓
$identity = $this->getRequest()->getAttribute('identit
if ($identity) {
$uid = (string)$identity->get('id'); // strval と同じ意味
} else {
// 未ログイン時の処理
$uid = null;
}
)
●レコードの新規作成(save)
$models = [
'user_id' => $uid,
'text' => $data['Model']['text'],
'model2_id' => $data['Model']['model_id'],
'is_delete' => $data['Model']['is_delete'],
];
if ($this->Model->save($models)) {
↓
$models = $this->Models->newEntity([
'user_id' => $uid,
'text' => $data['Models']['text'],
'models2_id' => $data['Models']['mutter_id'],
'is_delete' => $data['Models']['is_delete'],
]);
if($this->Models->save($models)) {
●レコード更新(save)
$data = [
'id'=>$d['id'],
'model_id'=>$d['model_id'],
'user_id'=>$d['user_id'],
'text'=>$d['text'],
'is_delete'=>1
];
if ($this->Models->save($data)) {
↓
$data.is_delete=>1
if ($this->Models->save($data)) {
●レコード削除処理(is_deleteに1をセット)
↓
$data = $this->Models->get($model_id);
$data->is_delete = 1;
return $this->Models->save($data);
●フラッシュメッセージ
[appController]
(コードなし)
↓
$this->loadComponent('Flash');
[controller]
$this->getRequest()->getSession()->setflash('フラッシュでメッセージ。', 'default', [
'class' => "uk-alert uk-alert-danger"
]);
↓
$this->Flash->success('フラッシュでメッセージ。');
(もしくは)
$this->Flash->success('フラッシュでメッセージ。', [
'key' => 'flash', // デフォルトのキー(通常変更不要)
'params' => ['class' => "uk-alert uk-alert-success"] // ★ここにクラスを指定
]);
[view]
echo $this->Session->flash();
↓
echo $this->Flash->render();
●viewでのformのinput
echo $this->Form->input('Model.body',[
'type'=>'textarea',
'label'=>false,
'id'=>'replyBody',
'class'=>'uk-width-1-1',
'error'=>[
'attributes'=>[
'class'=>'uk-alert uk-alert-danger'
]
],
'div'=>['class'=>'uk-form-row uk-margin-bottom']
]);
↓
echo $this->Form->control('Model.body',[
'type'=>'textarea',
'label'=>false,
'div'=>['class'=>'uk-form-row uk-margin-bottom'],
'class'=>'uk-width-1-1',
'id'=>'textBody',
'error'=>[
'attributes'=>[
'class'=>'uk-alert uk-alert-danger'
]
]
]);
●session情報取得
$model2_Id = $this->getRequest()->getSession()->read('Auth.Model.Model2.id');
↓
$session = $this->request->getSession();
$model2_Id = $session->read('Auth.model2.id');
【番外】
●cakephp4のキャッシュクリアコマンド
bin/cake cache clear