Всем привет и счастливой Пасхи!
У меня возникла эта проблема при переносе устаревшего приложения с CakePHP 2.x на CakePHP 3.x.
Я пытаюсь загрузить все содержимое таблицы базы данных в функцию инициализации модели (ConfigurationsTable.php - преобразована в Singleton). Я также пробовал тот же код в конструкторе, но все равно получаю ту же ошибку. Также попытался переместить его в отдельную функцию, но все равно не повезло.
Он отлично работает в CakePHP 2.x, но я получаю фатальную ошибку в CakePHP 3.
Код выглядит следующим образом
namespace App\Model\Table;
use Cake\ORM\Table;
use Cake\Validation\Validator;
class ConfigurationsTable extends Table
{
private $_configurations;
public static function getInstance()
{
static $instance = null;
if ($instance === null) {
$instance = new static();
}
return $instance;
}
public function is_set($key)
{
return isset($this->_configurations->{$key});
}
public function fetch($key)
{
return $this->_configurations->{$key};
}
public function initialize(array $config)
{
$this->addBehavior('Timestamp');
$this->_configurations = new \stdClass();
$configs = $this->find('all');
foreach ($configs as $c) {
if (isset($c->key) && $c->key != '') {
$this->_configurations->{$c->key} = $c->value;
}
}
}
public function validationDefault(Validator $validator)
{
$validator
->notEmpty('key')
->add('key', [
'unique' => [
'rule' => 'validateUnique',
'provider' => 'table',
'message' => __('This configuration key already exists')
]
])
->notEmpty('value')
;
return $validator;
}
Строка, вызывающая ошибку: $ configs = $ this-> find ('all');
Может ли кто-нибудь предоставить мне решение для этого? Мне это нужно для работы ..
Заранее большое спасибо