首页 > 解决方案 > 在 CakePHP 中使用 TreeBehavior 从文本中保存新树

问题描述

使用 CakePHP 3.9 中的TreeBehavior,您可以轻松创建格式化列表

$list = $categories->find('treeList');

我的类别
_Fun
__Sport
___Surfing
___Skating
_Trips
__National
__International

反过来也可以吗?我让我的用户修改树列表(如上面的示例),我想将结果保存为新树。

是否有内置功能可以使用现有数据(作为格式化文本或级联实体)创建新树?

对我来说,另一种方法是处理列表并一一保存实体,然后让 TreeBehavior 计算出lftrght列。

标签: cakephptreecakephp-3.x

解决方案


没有这样的内置功能,不,您必须自己处理。

您有两个选择,要么一一保存节点,让行为在每次保存时更新lft/rght字段,要么在保存时禁用行为,然后恢复树,如果您有多个树,可能使用范围。

在任何情况下,您都需要parent_id在保存时相应地为您的记录填充字段,如果没有该字段,树行为将无法生成正确的lft/rght字段值。


推荐阅读