|
|
@@ -20,9 +20,9 @@ use Cake\Event\Event;
|
|
|
use Cake\I18n\I18n;
|
|
|
use Cake\ORM\Behavior;
|
|
|
use Cake\ORM\Entity;
|
|
|
+use Cake\ORM\Locator\LocatorAwareTrait;
|
|
|
use Cake\ORM\Query;
|
|
|
use Cake\ORM\Table;
|
|
|
-use Cake\ORM\TableRegistry;
|
|
|
use Cake\Utility\Inflector;
|
|
|
|
|
|
/**
|
|
|
@@ -40,6 +40,8 @@ use Cake\Utility\Inflector;
|
|
|
class TranslateBehavior extends Behavior
|
|
|
{
|
|
|
|
|
|
+ use LocatorAwareTrait;
|
|
|
+
|
|
|
/**
|
|
|
* Table instance
|
|
|
*
|
|
|
@@ -78,7 +80,8 @@ class TranslateBehavior extends Behavior
|
|
|
'referenceName' => '',
|
|
|
'allowEmptyTranslations' => true,
|
|
|
'onlyTranslated' => false,
|
|
|
- 'strategy' => 'subquery'
|
|
|
+ 'strategy' => 'subquery',
|
|
|
+ 'tableLocator' => null
|
|
|
];
|
|
|
|
|
|
/**
|
|
|
@@ -93,6 +96,11 @@ class TranslateBehavior extends Behavior
|
|
|
'defaultLocale' => I18n::defaultLocale(),
|
|
|
'referenceName' => $this->_referenceName($table)
|
|
|
];
|
|
|
+
|
|
|
+ if (isset($config['tableLocator'])) {
|
|
|
+ $this->_tableLocator = $config['tableLocator'];
|
|
|
+ }
|
|
|
+
|
|
|
parent::__construct($table, $config);
|
|
|
}
|
|
|
|
|
|
@@ -104,7 +112,7 @@ class TranslateBehavior extends Behavior
|
|
|
*/
|
|
|
public function initialize(array $config)
|
|
|
{
|
|
|
- $this->_translationTable = TableRegistry::get($this->_config['translationTable']);
|
|
|
+ $this->_translationTable = $this->tableLocator()->get($this->_config['translationTable']);
|
|
|
|
|
|
$this->setupFieldAssociations(
|
|
|
$this->_config['fields'],
|
|
|
@@ -133,18 +141,19 @@ class TranslateBehavior extends Behavior
|
|
|
$targetAlias = $this->_translationTable->alias();
|
|
|
$alias = $this->_table->alias();
|
|
|
$filter = $this->_config['onlyTranslated'];
|
|
|
+ $tableLocator = $this->tableLocator();
|
|
|
|
|
|
foreach ($fields as $field) {
|
|
|
$name = $alias . '_' . $field . '_translation';
|
|
|
|
|
|
- if (!TableRegistry::exists($name)) {
|
|
|
- $fieldTable = TableRegistry::get($name, [
|
|
|
+ if (!$tableLocator->exists($name)) {
|
|
|
+ $fieldTable = $tableLocator->get($name, [
|
|
|
'className' => $table,
|
|
|
'alias' => $name,
|
|
|
'table' => $this->_translationTable->table()
|
|
|
]);
|
|
|
} else {
|
|
|
- $fieldTable = TableRegistry::get($name);
|
|
|
+ $fieldTable = $tableLocator->get($name);
|
|
|
}
|
|
|
|
|
|
$conditions = [
|