cakephp3 добавление поведения во весь проект [дубликат]

Самый мнемонический способ представления вашего псевдокода в Python:

x = 0
y = 1
z = 3
mylist = []

if any(v == 0 for v in (x, y, z)):
    mylist.append("c")
if any(v == 1 for v in (x, y, z)):
    mylist.append("d")
if any(v == 2 for v in (x, y, z)):
    mylist.append("e")
if any(v == 3 for v in (x, y, z)):
    mylist.append("f")
0
задан dav 19 October 2015 в 20:53
поделиться

2 ответа

Используйте прослушиватель событий, который прослушивает события Model.beforeSave, Model.beforeFind и Model.initialize и применяет все, что вы хотите сделать. Прочитайте главу о событиях и документации для обратных вызовов таблицы .

use Cake\Event\EventListenerInterface;
use Cake\Event\Event;

class SomeListener implements EventListenerInterface
{

    public function implementedEvents()
    {
        return [
            'Model.beforeFind' => 'beforeFind',
        ];
    }

    public function beforeFind(Event $event, Query $query, ArrayObject $options, boolean $primary)
    {
        // Your code here
    }
}

И присоедините ее к глобальному . Теперь он будет слушать обратные вызовы всех табличных объектов.

1
ответ дан burzum 26 August 2018 в 03:28
поделиться

Вы также можете создать AppTable в своей папке src / Model / Table:

namespace App\Model\Table;

use Cake\ORM\Table;

class AppTable extends Table
{
    public function initialize(array $config)
    {
        parent::initialize($config);

        $this->addBehavior('myBehavior');
        $this->addBehavior('myBehavior2');
        $this->addBehavior('myBehavior3');
    }
}

И затем расширяет ваш класс Table с помощью AppTable:

namespace App\Model\Table;

use App\Model\Table\AppTable;

class ArticlesTable extends AppTable
{

}
3
ответ дан ndm 26 August 2018 в 03:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: