|
|
1
4
有一种内置方法,可将类似树的结果生成到选择选项标记的列表中:
而不是使用find(线程) 也就是说,如果您将树行为附加到它(因为它显然是一个类似树的模型,所以您可能应该拥有它)。 但是如果你想保持你的find(线程)方法,你需要通过递归方法手动转换它。 |
|
|
2
2
谢谢 DSkinner ,信息量很大.. 我将其修改为更通用的:
|
|
|
3
1
这是对我有用的。 确保更换:
/**
* Returns an indented html select based on children depth
*
* @param array $data_array - Array of data passed in from cake's find('threaded') feature
* @param array $list - Used internally, contains array to be returned
* @param int $counter - Used Internally, counter for depth
* @return array
*/
public function drop_down_from_threaded($data_array, &$list = array(), $counter = 0)
{
if ( ! is_array($data_array))
return array();
foreach ($data_array AS $data)
{
$list[$data[{SELECT_ID}]] = str_repeat(' ', $counter).$data[{SELECT_LABEL}];
if ( ! empty($data['children']))
{
$this->drop_down_from_threaded($data['children'], $list, $counter + 1);
}
}
return $list;
}
/**
* Get the data from the find('threaded') and pass it to our new function
*/
$results = $this->{MODEL_NAME}->find('threaded');
$results = $this->drop_down_from_threaded($results);
这可能不是对每个人都100%有效,对我也有效,但它应该有助于给你一些开始。 |
|
|
4
0
什么是“孩子”?好像你的树是在一对多的关系中产生的 不必使用树行为来使用此方法- 但是所有期望的结果必须能够在一个查询中找到 . |