CakePHP 2.3 — новые проблемы с HABTM

Я новичок в CakePHP и у меня ограниченный опыт/знания PHP, поэтому будьте осторожны! :) Я искал, читал, искал и читал еще, но не могу понять, в чем моя проблема... У меня есть несколько проблем, но все они относятся к HABTM... FWIW, эти файлы были изначально сгенерированы выпечка торта, но с тех пор я немного возился с ними (поскольку это никогда не работало OOTB). Это первая проблема - не сохраняются все данные!

У меня есть эти таблицы:

activities
activitities_unitquals
types
unitquals
users

А это моя модель деятельности:

class Activity extends AppModel {
    public $belongsTo = array(
        'User' => array(
            'className' => 'User',
            'foreignKey' => 'user_id'
        ),
        'Type' => array(
            'className' => 'Type',
            'foreignKey' => 'type_id'
        )
    );
    public $hasAndBelongsToMany = array(
        'Unitqual' => array(
            'className' => 'Unitqual',
            'joinTable' => 'activitities_unitquals',
            'foreignKey' => 'activity_id',
            'associationForeignKey' => 'unitqual_id',
            'unique' => false
        )
    );

}

И мой ActivityController:

class ActivitiesController extends AppController {
    public function index() {
        $this->Activity->recursive = 0;
        $this->set('activities', $this->paginate());
    }
    public function view($id = null) {
        if (!$this->Activity->exists($id)) {
            throw new NotFoundException(__('Invalid activity'));
        }
        $options = array('conditions' => array('Activity.' . $this->Activity->primaryKey => $id));
        $this->set('activity', $this->Activity->find('first', $options));
    }
    public function add() {
        if ($this->request->is('post')) {
            $this->Activity->create();
            if ($this->Activity->saveAll($this->request->data)) {
                $this->Session->setFlash(__('The activity has been saved'));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('The activity could not be saved. Please, try again.'));
            }
            debug($this->Activity->validationErrors);
        }
        $users = $this->Activity->User->find('list');
        $types = $this->Activity->Type->find('list');
        $unitquals = $this->Activity->Unitqual->find('list');
        $this->set(compact('users', 'types', 'unitquals'));
    }
}

Мои действия/индекс, похоже, работают нормально (хотя он не показывает никаких «единиц», но меня это не волнует). Activity/view/id также не показывает никакой информации об Unitquals (что мне нужно будет исправить). Но самая большая проблема заключается в том, что он не сохраняет информацию о Unitqual, когда я использую activity/add.

Вот View/Activities/add.ctp:

<div class="activities form">
<?php echo $this->Form->create('Activity'); ?>
    <fieldset>
        <legend><?php echo __('Add Activity'); ?></legend>
    <?php
        echo $this->Form->input('user_id');
        echo $this->Form->input('type_id');
        echo $this->Form->input('other');
        echo $this->Form->input('date');
        echo $this->Form->input('name');
        echo $this->Form->input('detail');
        echo $this->Form->input('status', array(
            'checked' => true
            ));
        echo $this->Form->input('unitqual', array(
            'type' => 'select',
            'multiple' => 'checkbox',
            'options' => $unitquals,
            'label' => 'Units & Quals'
            ));
    ?>
    </fieldset>
<?php echo $this->Form->end(__('Submit')); ?>
</div>

Форма отображается нормально, но ничего не сохраняется в таблице activitities_unitquals (все остальное корректно сохраняется в таблице действий).

Есть идеи???


person Jeremy Davis    schedule 25.04.2014    source источник


Ответы (1)


добавить название модели перед полем..

    echo $this->Form->input('Unitqual.unitqual', array( // here, add the model name
        'type' => 'select',
        'multiple' => 'checkbox',
        'options' => $unitquals,
        'label' => 'Units & Quals'
        ));
person Fazal Rasel    schedule 26.04.2014