1

可能是个愚蠢的问题。

由于我的控制器和模型太大(我也不想弄乱旧模块),我想创建一个新的控制器和模型,我想将代码与现有的..也就是说,我想移动从用户控制器和用户模型到计费控制器和计费模型的一些代码(没有账单表,所有信息都存储在用户表中,所以我给出了 useTable='users')。我不想执行任何用用户模型编写的代码,在执行 billings 控制器时,只需要执行 BillingModel 代码。

业务控制器

class BillingsController extends AppController 
{

    function add()
    {
        if (!empty($this->request->data)) 
        {
            $this->Billing->create();
            if ($this->Billing->save($this->request->data)) 
            {
                echo 'Saved'; // Message, redirect etc
            }
        }
    }
}

计费模式

class Billing extends AppModel {


    public $useTable = 'users';

        public $hasOne = array('Profile');

public $validate = array(
        'email' => array(
            'email' => array(
                'rule' => 'email',
                'message' => 'Please provide a valid email address.',
                'last' => true,
            ),
                 'first_name' => array(
            'notempty' => array(
                'rule' => array('notempty'),
                'message' => 'Please enter your name',
            ),
                    )
        );

}

所有表单字段都将以 data[Business] 作为前缀。

数据正确保存到数据库中。我只是想知道,这种方法有什么问题吗?

4

1 回答 1

3

在这种情况下,据我了解,您在两个模型中都复制了一些代码(验证、关系等)。在我看来,更好的解决方案是使用 Billing 扩展用户模型

class Billing extends Users {

}

控制器的情况相同:

class BillingsController extends UsersController 
{

}
于 2012-09-25T10:09:09.430 回答