CakePHP:如何自定义多个复选框的标签

时间:2011-01-04 12:58:48

标签: cakephp checkbox label

我已经做了很多搜索,但还没能解决这个问题。我有一个用户注册表单,用户可以在注册时选择多个商店分支作为收藏夹。我将这种关系设置为HABTM。

我能够将商店分支显示为多个复选框,但我需要在每个复选框的标签中显示商店名称(商店分支属于商店名称)以及分支名称。类似的东西:

Levi's - Canal Walk

其中Canal Walk是分行名称,而Levi's是商店名称(来自不同的表格)

任何人都可以分享一些关于如何做到这一点的见解吗?

2 个答案:

答案 0 :(得分:0)

我没有对此进行过测试,但它可能有效(或帮助您沿着正确的道路前进):

$branches = $this->Branch->find('list', array(
    'fields' => array('Branch.id', 'CONCAT(Store.name, " - ", Branch.name)'),
    'joins' => array(
        array(
            'table' => 'stores',
            'alias' => 'Store',
            'type' => 'inner',
            'foreignKey' => false,
            'conditions' => array('Branch.store_id' => 'Store.id')
        )
    )
));

在你的控制器中设置它,或者通过将其放在模型中来保持干燥,例如findFullList()

希望有所帮助!

答案 1 :(得分:0)

我会在视图中完成所有这些操作。如果您的HABTM关系设置正确,那么Store模型的查询应该是这样的:

$stores = $this->Store->findAll();
//Returns
Array([0] => Array(
    'Store' => array(),
    'Branch' => array(
        [0] => array(),
        [1] => array()...));

然后将$ stores变量传递给视图,并使用双嵌套循环遍历它。

foreach($stores as $store){  
        foreach($store['Branch'] as $branch){
            //Code to output checkbox by using $branch['name']
        }
    }