在 CakePHP 中使用 TreeBehavior 从文本中保存一棵新树

Saving a new tree from text with TreeBehavior in CakePHP

使用 TreeBehavior in CakePHP 3.9 you can easily create a formatted list:

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

My Categories
_Fun
__Sport
___Surfing
___Skating
_Trips
__National
__International

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

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

我的替代方案是处理列表并一个一个地保存实体,然后让 TreeBehavior 计算出 lftrght 列。

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

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

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