May be a stupid question.
Since my controller and model is too big (also I don’t want to mess up with old modules), I want to create a new controller and model and I want to separate the code from existing..That is, I want to move some code from users controller and user model to billing controller and billing model (there is no billings table, all info is storing is users table, so I given useTable=’users’). I don’t want to execute any of the code written in user model, while executing the billings controller, only BillingModel code needs to be executed.
BusinessController
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
}
}
}
}
BillingModel
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',
),
)
);
}
All Form fields will have data[Business] as prefix.
The data is saving correctly into the database. I just want to know, anything wrong with this approach ?
In this case, as I understand you are duplicating some code in both models (validation, relations ect.) In my opinion better solution would be to extend Users model with Billing
the same situation is with controller: