CakePHP3 Helperから任意のModelを呼ぶ

CakePHP3

HelperからModelを呼び出す方法

(HelperでloadModelをできるようにする方法

 

1. 適当なHelperをつくる

ex. src/View/Helper/UsersHelper.php

 

2. 普通にHelperを書く

<?php
namespace Cake\View\Helper;

use Cake\View\Helper;

class UsersHelper extends Helper{

    public function exFunction(){
    }

}

 

3. 2で書いたHelperでController, Shellクラスで使っているようにloadModelを使えるようにする

赤字がloadModelのために追加したコード

<?php
namespace Cake\View\Helper;

use Cake\View\Helper;

use Cake\Datasource\ModelAwareTrait;

class UsersHelper extends Helper{

    use ModelAwareTrait;

    public function exFunction(){

        $this->modelFactory('Table', ['Cake\ORM\TableRegistry', 'get']);

        $this->loadModel('Users');

    }

}

 

以上のやり方でHelperからModelを呼べるようになった.

同様のやり方で,ViewからModelを呼べるようにもできそう.

.ctpからModelを呼んだほうがすっきりするかもしれないが,それはせずにHelperに頼ったほうがよいだろうということで.