I'm having a relatively simple problem (at least I hope). I'm hoping
I'm simply not understanding the framework properly, but perhaps
someone can help me solve my confusion.
The problem I'm having is related to saving data to multiple models in
one save. Perhaps this idea is voodoo, but in the below code it would
be highly advantageous to be able save data to both the ZipCode and
the Business model in the same call to save(). I was hoping it would
be straightforward with cake 1.2 out of the box by simply setting up
the hasOne and belongsTo relationship in the models.
Right, now the Business Name seems to work just fine. However, the
Zip Code doesn't save. See the code below for what I've done, I'll
discuss what I've tried below the code snippets.
[In the live code, there are a lot more (multiple more hasOne and
hasMany) relationships than shown below, but I removed many of them
for clarity]
====================================
::::::::::::::::BUSINESS MODEL:::::::::::::::::::::::::::
------------------------------------------------------------------------
class Business extends AppModel
{
var $useTable = 'businesses';
var $validate = array(
'name' => array(
'minlength' => array(
'rule' => array('minLength', '1'),
'message' => 'A Business Name Is Needed!'
)
),
'zip_code' => array(
'postal' => array(
'rule' => array('postal', null, 'us'),
'message' => 'Only valid US Zip Codes Allowed!'
)
)
);
var $hasOne = array(
'ZipCode' => array(
'className' => 'ZipCode',
'dependent' => true
));
}
------------------------------------------------------------------------
====================================
::::::::::::::::ZipCode MODEL::::::::::::::::::::::::::::::::
------------------------------------------------------------------------
class ZipCode extends AppModel
{
var $useTable = 'zip_codes';
var $belongsTo = array(
'Business' => array(
'className' => 'Business',
'foreignKey' => 'business_id'
)
);
}
------------------------------------------------------------------------
====================================
::::::::::::::::Add A BUSINESS VIEW::::::::::::::::::::
------------------------------------------------------------------------
<h2>Add A Business</h2>
<?php echo $form->create('Business', array('type' => 'post', 'action'
=> 'add', 'id' => 'request-form')); ?>
<?php echo $form->label('Business.name', 'Business name'); ?>
<?php echo $form->input('Business.name', array('type' => 'text',
'label' => false)); ?>
<?php echo $form->label('Business.zip_code', 'Zip Code'); ?>
<?php echo $form->input('Business.zip_code', array('type' =>
'text', 'label' => false)); ?>
<?php echo $form->end('Add It!'); ?>
------------------------------------------------------------------------
====================================
::::::::::::::::ADMIN CONTROLLER:::::::::::::::::::::::
------------------------------------------------------------------------
class AdminController extends AppController {
var $helpers = array('html', 'time', 'javascript', 'ajax');
var $uses = array('Business','ZipCode');
/** main action (starting point) **/
function index ()
{
$this->pageTitle = 'The Back End';
}
/** main action (starting point) **/
function add ()
{
$this->pageTitle = 'Add A Business';
/** we have a search **/
if (!empty($this->data)) {
//If the form data can be validated and saved...
if($this->Business->save($this->data, true,
array('name','zip_code'))){
//Set a session flash message and redirect.
$this->Session->setFlash('Business Added!');
$this->redirect('/admin/index');
exit(0);
}
}
}
}
------------------------------------------------------------------------
To get it working, I've tried the following with no successful saves
of the ZipCode field:
1) Changing the form Class name:
<?php echo $form->input('ZipCode.zip_code', array('type' => 'text',
'label' => false)); ?>
2) Changing the controller save call around in various ways:
if($this->Business->save($this->data, true, array('name','zip_code')))
if($this->Business->save($this->data['Business'])) ...
Essentially, I would like the data to be saved to both models in one
call; I have whole lot of models in this particular system, and
calling a bunch of saves to all the individual models isn't really
practical.
Thanks for your help in advance!
CakeFan
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake
PHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---