CakePHP-正确的方法有很多方法

我有3个型号

分类:

 class Category extends AppModel {
     public $belongsTo = array(
        'Parent' => array(
            'className' => 'Category',
            'foreignKey' => 'parent_id'
        ),
     );
     public $hasMany = array(
         'Children' => array(
            'className' => 'Category',
            'foreignKey' => 'parent_id'
         ), 
        'UserCategoryMeta'
     );
}

使用者:

class User extends AppModel {
    public $hasMany = array(
        'UserCategoryMeta' => array(
            'className' => 'UserCategoryMeta',
            'foreignKey' => 'user_id',
        ),
    );
}

UserCategoryMeta:

class UserCategoryMeta extends AppModel
{
    public $belongsTo = array(
        'User', 'Category'
    );
}

我需要做的是让每个用户都可以选择许多类别,对于这些关联中的每一个,我都需要用户设置搜索条件,该条件仅是数据库中的1个字段.

因此,UserCategoryMeta表如下所示:

id  |  user_id  | category_id  |  search_terms

我找到了一种可能有效的方法,但似乎很hacky.

在用户控制器中,我有:

$Categories = $this->User->Category->find('list');

然后在添加视图中,具有复选框:

echo $this->Form->input('Category.Category',array(
    'type' => 'select', 
    'multiple' =>'checkbox',
    'options' => $Categories,
));

然后,我可以使每个复选框旁边都有一个搜索词输入的唯一方法是在添加视图中执行此操作:

foreach ($Categories as $key => $category){
    echo '<input type="text" id="Category'.$key.'SearchTerms" name="data[Category][search_terms]['.$key.']"><br/>';
}

这产生了我想要的东西,但是很明显,因为在提交表单时,我只是创建随机输入,因此黑洞.我设法通过了这项工作,但是我知道我做错了方法,希望有人可以帮助我以正确的方法做.

另外,一旦我在控制器中有了这个数据数组,我就不确定如何正确地将其保存到数据库中.

在此先感谢您的帮助!

解决方法:

只需做您正在做的事情即可,但是重复使用$this-> Form->输入,而不仅仅是手动编写HTML.

上一篇:CakePHP插件模型在使用Containable时未关联


下一篇:搭建VNC服务器