2

使用 Cookbook 中的示例:http: //book.cakephp.org/2.0/en/core-libraries/behaviors/tree.html

如果你调试()这个,你会得到一个类别(id => name)的平面数组()

这对大多数用途来说都很好,但是如果您想基于此创建导航并为 URL 设置一个 slug,而不是 id,那么您就不走运了。

我知道我可以在控制器中使用 $this->Category->find('threaded') 来获取所有字段,但它缺乏平面列表的便利性,因为我必须创建一个递归函数来生成使用链接蛞蝓,正是我希望避免的。

那么在视图中获取我需要的额外 Category.slug 字段的最佳方法是什么?

4

1 回答 1

2

CakePHP 的generateTreeList()方法允许您选择返回的键和值。例如,如果您希望返回一个以 slug 作为键并以链接文本作为值的列表,则可以使用$keyPathand$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"
)
于 2012-11-13T00:53:14.243 回答