I am working to build a job board with an admin side for adding jobs
and categories, and a front end for browsing and searching.
On the admin side I have a form for editing/creating jobs.
Each job needs to be able to be assigned to multiple categories. I am
assuming the best way to do this is through an HABTM association of
the jobs and categories tables. So I have created the categories_jobs
table and placed the HABTM associations along with joinTable
properties in each of the jobs and categories models respectively.
The following information is collected from the form: Title,
Description, Location
That information needs to be stored in the jobs table.
Also, I have multiple checkboxes of categories on the form, these come
from the categories table through the HABTM relation.
When I try to save using $this->Job-save($this->data) I get an SQL
error about saving an array.
I need to be able to fill out the job data and then select multiple
categories for the job to be associated with.
Here is my action in the jobs_controller code:
function edit($id=null) {
$this->set('category', $this->Job->Category->find('list'));
$data = $this->editOrCreate($id);
if(!empty($this->data)) {
$this->data['Category']['id'] = (array('category_id'));
$this->User['User']['admin'] = 1;
if($this->Job->saveAll($data)) {
$this->Session->setFlash('The job has been saved');
$this-
>redirect(array('action'=>'index',null,null,true));
} else {
$this->Session->setFlash('The Job could not be saved.
Please try again later.');
}
}
$categories = $this->Job->Category->find('list');
}
and here is the view where the data is entered:
<?php echo $form->create('Job');?>
<div class="body">
<? if($editing): ?>
<div class="floatRight">
<?php echo $html->link('Delete Job',
array('action'=>'delete',
$form->value('Job.id')), null, __('Are you sure you want to delete
this job?', true).' '. $form->value('Job.name')); ?>
</div>
<h2>Edit Job - <?=$form->value('Job.name')?></h2>
<?=$form->input('username',array('type'=>'hidden'));?>
<? else: ?>
<h2>Create New Job</h2>
<? endif; ?>
<?=$form->input('name', array('autocomplete'=>'off','label'=>'Title',
'style'=>'width: 175px;'));?>
<?=$form->input('description',
array('autocomplete'=>'off','label'=>'Description', 'style'=>'width:
175px;'));?>
<?=$form->input('location', array('autocomplete'=>'off',
'label'=>'Location', 'style'=>'width: 175px;'));?>
<?=$form->input('job_id', array('type'=>'hidden',
'value'=>'job_id'));?>
<?=$form->input('category_id',array('options'=>
$category,'multiple'=>'checkbox', 'label'=>'Categories'));?>
</div>
<?=$form->save('Job');?>
<?php echo $form->end();?>
Any help to overcome this problem would be GREATLY appreciated. I am
pretty new at PHP and CakePHP, so if you could be verbose in your
reply I would be grateful.
_______________________________________________
UPHPU mailing list
[email protected]
http://uphpu.org/mailman/listinfo/uphpu
IRC: #uphpu on irc.freenode.net