如何在下拉列表中加载类别名称

时间:2014-11-29 08:57:05

标签: php cakephp drop-down-menu

我想在下拉列表中仅加载主要类别(不是子类别)名称。我已经尝试了但不能成功。这个网站上有很多答案,我试图以这种方式解决我的问题,但不能。下面给出了类别表,它与Tree中的cakephp文档相同。

类别表属性

id | parent_id | LFT | rght | name |

我尝试了以下链接中给出的这些技巧 How to populate drop-down list with database values in CakePHP

下面给出了创建类别的控制器的完整代码。

 if ($this->request->is('post')) {
            $this->Category->create();
            if ($this->Category->save($this->request->data)) {
                $this->Session->setFlash(__('Category has been saved.'));
                return $this->redirect(array('action' => 'index'));
            }
            $this->Session->setFlash(__('Unable to add Category.'));
        }
        else 
          $categories = $this->Category->find('list');
          $this->set(compact('categories'));
           return $this; 
      }

category.ctp的代码是

  <?php echo $this->Form->create('Category'); ?>
        <fieldset>
        <legend><?php echo __('Add Category'); ?>
        </legend>
        <?php
                $form->input('id');
        //      echo $this->Form->input('id');
                echo $this->Form->input('name');

        ?>
        </fieldset>
        <?php echo $this->Form->end(__('Submit')); ?>
        </div>

现在请建议我在下拉列表中加载数据的解决方案。

2 个答案:

答案 0 :(得分:0)

你可以放入控制器
       $这 - &GT; loadModel( '分类');        $ categories = $ this-&gt; Category-&gt; find('list');        $这 - &gt;设置( '类别',$类别));

将category.ctp的代码放在

           <?php if(isset($categories )){
             foreach ($categories as $key => $value) {
                  $id= $value['Category']['id'];
                  $options[$id]=$value['Category']['name'];                   
              }
           } 
           echo $this->Form->select('Category.id', $options,array('class'=>'select2','data-  placeholder'=>'Choose a category','empty'=>''));
             ?>

它会起作用。

答案 1 :(得分:0)

坚持惯例,一切都会好的。我假设您需要添加表单中的列表来选择父类别(您的意图btw是您应在问题中澄清的内容)。

对于您想要按lft订购的树,所以如果您使用find('list'),则必须在order选项中传递该树,并且只需检索顶部您必须在符合parent_idnull的所有类别的条件下传递的级别类别(或子类别为“主要”类别的父类别的ID)。

<强>控制器

$parents = $this->Category->find('list', array(
    'conditions' => array(
        'Category.parent_id' => null
    ),
    'order' => array(
        'Category.lft' => 'asc'
    )
));
$this->set('parents', $parents);

查看

echo $this->Form->input('parent_id');

有关详细信息,请参阅