Я думал, что использую поведение дерева для моих меню, как предлагает руководство, но я все больше смущаюсь.CakePHP 3: Сфера действия дерева
Я хотел бы иметь возможность извлекать данные меню на основе текущего контроллера, который я могу получить из объекта запроса.
Я подумал, что если я имел, что я мог бы установить масштабы поведения дерева на лету с помощью:
$this->behaviors()->Tree->config('scope', ['country_name' => 'France']);
Я думал, что оттуда я мог бы просто выбрать все узлы с чем-то вроде:
$this->MyModel->find('all')
Но это возвращает все.
Я прочитал в руководстве, что область действия ограничивает объем всех операций, поэтому это область замешательства.
Я также попытался
$this->MyModel->find('threaded')
но возвращает все.
Хорошо, что оно возвращает все дерево, как должно, потому что оно показывает, что я сделал хотя бы часть его права.
Действительно странно часть заключается в следующем:
$this->MyModel->find('children', ['for' => 1]);
возвращает именно то, что я бы ожидать, пока я не установить область. Если я задаю область, то дерево, чей id равно 1, я получаю пустой массив.
Итак, подведем итоги. Вот код, который я использую в ячейке вида.
$this->loadModel('MyModel');
$this->MyModel->behaviors()->Tree->config('scope', ['title' => 'MyTreeTitle']);
$this->MyModel->find('threaded')->toArray();
И, как я уже говорил, что возвращает два отдельных деревьев в моей таблице, а не только тот, чье название соответствует определенный объем.
Кроме того, я вручную проверил значения lft и rght, чтобы убедиться, что они верны, и они кажутся.
Было бы очень полезно помочь в этом, так как я монументально смущен.
EDIT
Я сделал немного больше пустячный и часть выше неправильно.
I выход результат
$this->MyModel->find('children', ['for' => 1]);
как TreeList и с областью установить это на самом деле просто возвращает узел я хочу найти детей для. Я ожидал, что область действия вернет единственный узел и дочерние элементы, основанные на уникальном значении. После повторного чтения руководства несколько раз он теперь потоплен тем, что он возвращает ТОЛЬКО строки, которые содержат значение области. Не знаете, как это полезно в контексте данных дерева, если у вас нет иерархии стран (в случае руководства), а не что-то вроде стран-> городов-> ориентиров.
Может ли кто-нибудь сказать мне, если это предполагаемое поведение?
Следует также упомянуть, что я использую Postgresql. Может быть, это фактор.
Приветствия