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'));
}
}
Моя деятельность / индекс, кажется, работают нормально (хотя он не показывает никаких "юнит-тестов", но меня это не волнует). Деятельности /view/id также не показывает никакой информации о Unitquals (которую мне нужно будет исправить). Но самая большая проблема заключается в том, что он не сохраняет информацию Unitqual, когда я использую деятельность / добавить.
Вот вид / деятельность /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 (все остальное правильно сохраняется в таблице действий).
Есть идеи???
1 ответ
Добавить название модели перед полем
echo $this->Form->input('Unitqual.unitqual', array( // here, add the model name
'type' => 'select',
'multiple' => 'checkbox',
'options' => $unitquals,
'label' => 'Units & Quals'
));