-2

我有一个如下表结构

|id| parent_id |name|

parent_id递归地引用同一个表我试图创建一个下拉树但不成功。请告诉它如何在 core php 或 Cake php 中创建。

这是我到目前为止所做的工作..但它给出了错误'致命错误:在第 390 行的 /viren/webroot/upms/app/controllers/tests_controller.php 中允许的内存大小为 134217728 字节已用尽(试图分配 67025477 字节) ';

function admin_takecat(){
$this->layout=false;
$this->render(false);
Configure::write('debug',2);

$firstlevel=$this->cats->find('list',array('fields'=>array('Category.id','Category.cat_name'),'conditions'=>array('Category.parent_id'=>0,'department_id'=>9)));
    $dropbox='<select>';
foreach($firstlevel as $id=>$val){
    $dropbox.='<option value='.$id.'>'.$val.'</option>';
    $count=$this->cats->find('count',array('conditions'=>array('Category.parent_id'=>0,'Category.department_id'=>9,'Category.parent_id'=>$id)));
    if($count>0){
    $dropbox=$this->_recursive($id,$dropbox,1);

    }

}
$dropbox.='</select>';
echo $dropbox;



}
function _recursive($catid,$dropbox,$level){

$listcats=$this->cats->find('list',array('fields'=>array('Category.id','Category.cat_name'),'conditions'=>array('Category.parent_id'=>0,'Category.department_id'=>9,'Category.parent_id'=>$catid)));
$mark='';
for($i=1;$i<=1;$i++){
    $mark.='-';

}
4

1 回答 1

0

我不确定您所说的“希望将父 ID 和子 ID 分开”是什么意思。了解 select 中的元素只不过是显示值和数据值,数据值将与字段名称一起发送到服务器。

所以select并不能真正区分多种数据值。例如,每个选项不能有多个 ID。您所能做的就是格式化您的显示值以包含 ID(例如您使用“1 - 游戏 - 0”等),并决定哪个数据值应该是选择中该选项的值。

您可以做的一件事是使用optgroup 标签对选项元素进行分组。像这样的东西:

<select name="myOptions">
  <optgroup label="Category 1">
    <option value="1">First Choice</option>
    <option value="2">Second Choice</option>
    <option value="3">Third Choice</option>
  </optgroup>
  <optgroup label="Category 2">
    <option value="4">Fourth Choice</option>
    <option value="5">Fifth Choice</option>
  </optgroup>
  <optgroup label="Category 3">
    <option value="6">Sixth Choice</option>
    <option value="7">Seventh Choice</option>
  </optgroup>
</select>

在验证中,浏览器不应该允许用户选择一个组,他们必须选择一个实际的选项。所以你不应该担心这个。这确实为更分层地显示您的值提供了一些额外的灵活性。但是,请理解在这种情况下只允许一级选项嵌套。(所以一个 optgroup 不能包含另一个 optgroup。)

于 2012-07-02T05:25:05.780 回答