Php 如何在下拉列表中加载类别名称
我只想在下拉列表中加载主类别而不是子类别名称。我已经尽力了,但没有成功。这个网站上有很多答案,我试着用那种方式解决我的问题,但没有。下面给出了类别表,它与树中的cakephp文档相同 类别表属性 id |家长| id | lft | rght |姓名| 我在下面的链接中尝试了这些技巧 下面给出了创建类别的控制器的完整代码Php 如何在下拉列表中加载类别名称,php,cakephp,drop-down-menu,Php,Cakephp,Drop Down Menu,我只想在下拉列表中加载主类别而不是子类别名称。我已经尽力了,但没有成功。这个网站上有很多答案,我试着用那种方式解决我的问题,但没有。下面给出了类别表,它与树中的cakephp文档相同 类别表属性 id |家长| id | lft | rght |姓名| 我在下面的链接中尝试了这些技巧 下面给出了创建类别的控制器的完整代码 if ($this->request->is('post')) { $this->Category->create();
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;
}
类别代码.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>
现在,请向我建议在下拉列表中加载数据的解决方案。您可以将
$this->loadModel'Category';
$categories=$this->categories->find'list';
$this->set'categories',$categories
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'=>''));
?>
它会起作用的。坚持惯例,一切都会好起来的。我假设您需要添加表单中的列表来选择父类别。顺便说一句,您应该在问题中澄清您的意图 对于要按lft排序的树,因此如果使用“查找”列表,则必须在“排序”选项中传递它,并且为了仅检索顶级类别,必须在匹配所有类别的条件下传递,其中父类id为null或父类的id(子类别是主类别) 控制器 看法 有关更多信息,请参阅
在使用代码后,现在面临此错误。调用一个成员函数输入一个非objectin代码,我认为$categories没有引号,是吗?我没有引用它。现在的错误是错误:不能将字符串偏移量用作数组,它位于第3行,即$id=$value['Category']['id'];对于将来的问题,请始终提及您的确切CakePHP版本!好的,我会的,cakephp verion是2.5谢谢,但实际上我只想在用户选择主类别时第一次选择主类别,然后子类别将显示在其他下拉列表中。所以请指导我。@user3623305这是一个完全不同的问题,与你最初的问题没有任何关系。请阅读我的第一个问题与我的上述评论不同,在第一个问题中,我要求显示类别,但在您的解决方案中,所有类别和子类别都将显示。这就是为什么我在上面的评论中提到我的观点。所以,请引导我在下拉菜单中只显示主要类别,因为我在问题的第一行提到了ed。@user3623305您的问题只显示类别,子类别也是类别。您应该更新您的问题,以澄清实际问题,以便对未来的读者有用。
$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');