CakePHP树行为-树与控制器中的线程
使用烹饪书中的示例: 如果您调试()这个函数,您将得到一个类别为(id=>name)的平面数组() 这在大多数情况下都很好,但是如果您想基于此创建导航,并且有一个URL的slug,而不是id,那么您就不走运了 我知道我可以在控制器中使用$this->Category->find('threaded')来获取所有字段,但它缺乏平面列表的便利性,因为我必须创建一个递归函数来使用slug生成链接,这正是我希望避免的CakePHP树行为-树与控制器中的线程,cakephp,tree,cakephp-2.0,behavior,Cakephp,Tree,Cakephp 2.0,Behavior,使用烹饪书中的示例: 如果您调试()这个函数,您将得到一个类别为(id=>name)的平面数组() 这在大多数情况下都很好,但是如果您想基于此创建导航,并且有一个URL的slug,而不是id,那么您就不走运了 我知道我可以在控制器中使用$this->Category->find('threaded')来获取所有字段,但它缺乏平面列表的便利性,因为我必须创建一个递归函数来使用slug生成链接,这正是我希望避免的 那么,获得视图中所需的额外Category.slug字段的最佳方法是什么 CakeP
那么,获得视图中所需的额外Category.slug字段的最佳方法是什么 CakePHP的
generateTreeList()
方法允许您选择返回的键和值。例如,如果您希望返回一个以slug作为键、链接文本作为值的列表,可以使用$keyPath
和$valuePath
参数来实现:
$data = $this->Category->generateTreeList(null, "{n}.Category.slug", "{n}.Category.text", '_');
debug($data); die;
可能产生:
array(
["my-categories"] => "My Categories",
["fun"] => "_Fun",
["sport"] => "__Sport",
["surfing"] => "___Surfing",
["skating"] => "___Skating",
["friends"] => "__Friends",
["gerald"] => "___Gerald",
["gwendolyn"] => "___Gwendolyn",
["work"] => "_Work",
["trips"] => "__Trips",
["national"] => "___National",
["international"] => "___International",
["other-peoples-categories"] => "Other People's Categories",
["extreme-fishing"] => "_Extreme fishing"
)