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

Reply via email to