2

クックブックの例を使用する:http: //book.cakephp.org/2.0/en/core-libraries/behaviors/tree.html

これをdebug()すると、category(id => name)のフラット配列()が得られます。

これはほとんどの目的で問題ありませんが、これに基づいてナビゲーションを作成し、IDではなくURLのスラッグを使用したい場合は、運が悪いです。

コントローラで$this->Category-> find('threaded')を使用してすべてのフィールドを取得できることは承知していますが、を使用してリンクを生成する再帰関数を作成する必要があるため、フラットリストの利便性に欠けています。ナメクジ、まさに私が避けたかったもの。

では、ビューに必要な追加のCategory.slugフィールドを取得するための最良の方法は何ですか?

4

1 に答える 1

2

CakePHPのgenerateTreeList()メソッドを使用すると、返されるキーと値を選択できます。たとえば、スラッグをキーとして、リンクテキストを値として持つリストを返したい場合は、$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"
)
于 2012-11-13T00:53:14.243 に答える