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.

Check out the new CakePHP Questions site http://cakeqs.org and help others with 
their CakePHP related questions.

You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to
cake-php+unsubscr...@googlegroups.com For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en

Reply via email to