使用Cakephp,如何在我的脚手架添加,编辑视图中获取多选元素或hasMany关系的复选框?

时间:2012-11-30 22:47:14

标签: php cakephp has-many scaffolding

我已经完成了将模型链接在一起(创建关联)的Cakephp文档,我可以通过在一个$ hasOne成员中定义一个$ hasOne成员和一个相应的$ belongsTo,在scaffolded添加和编辑视图中获得一个选择下拉列表。其他。现在,对于$ hasMany关系,我正在尝试在我的脚手架添加和编辑视图中获取某种表单输入(多选下拉列表或复选框...最好是复选框),以便用户选择相关的广告对于给定的租金。但是使用下面的代码,我没有在Rental添加和编辑视图中提及广告:'(我错过了什么?这是否可能?我在RoR和Grails中看到过这种情况但是无法使用CakePHP谢谢你的帮助!

租赁模式(app / Model / Rental.php)

<?php
class Rental extends AppModel {
    var $name = 'Rental';             
    var $belongsTo = array(
        'Agent' => array(
            'className'    => 'User',
            'foreignKey'    => 'agent_id'
        ),
        'Bedroom',
        'Landlord' => array(
            'className'    => 'Landlord',
            'foreignKey'    => 'landlord_id'
        )
    );  
    var $hasMany = array(
        'Advertisement' => array(
            'className'     => 'Advertisement',
            'foreignKey'    => 'rental_id',
            //'conditions'    => array('Comment.status' => '1'),
            'order'    => 'Advertisement.created DESC',
            'limit'        => '5',
            'dependent'=> false
        )
    );

    public $validate = array(
        'title' => array(
            'rule' => 'notEmpty'
        ),
        'description' => array(
            'rule' => 'notEmpty'
        )
    );

    public function isOwnedBy($rental, $user) {
        return $this->field('id', array('id' => $rental, 'user_id' => $user)) === $rental;
    }
}

租赁控制器(app / Controller / RentalsController.php)

<?php
class RentalsController extends AppController {
    public $scaffold;
}

广告模型(app / Model / Advertisement.php)

<?php
class Advertisement extends AppModel {
    var $name = 'Advertisement';                   
    var $belongsTo = array(
        'Rental' => array(
            'className'    => 'Rental',
            'foreignKey'    => 'rental_id'
        ),
        'Author' => array(
            'className'    => 'User',
            'foreignKey'    => 'author_id'
        )
    ); 
}

广告控制器(app / Controller / AdvertiesementsController.php)

<?php
class AdvertisementsController extends AppController {
    public $scaffold;
}

1 个答案:

答案 0 :(得分:2)

Cake的脚手架视图没有显示关系的hasMany方面的任何内容。他们假设你想从拥有belongsTo的模型中选择它。

坦率地说,对于这种关系来说,将它作为一个多项选择是有点奇怪的,恕我直言。多选通常用于hasAndBelongsToMany关系。如果你想这样做,你需要自己做,而不是使用Cake的脚手架。