, если ваша цель - использовать хеширование для вновь созданных пользователей, пожалуйста, обратитесь к this
Особенно функция beforeSave, которая просто
public function beforeSave() {
if (isset($this->data[$this->alias]['password'])) {
$this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
}
return true;
}
Пожалуйста, поймите, что в CakePHP, если вы включите поле, которого на самом деле НЕ в данных для моделей, это поле будет игнорироваться. Поэтому вам не нужно делать сброс для полей password_reset и password_confirm.
Что касается сохранения связанных записей и использования fieldList, я заметил, что вы явно не указали поля, которые хотите сохранить, в ключе fieldList массива.
Кроме того, вы указали, что у пользователя есть много инструментов, а у пользователя есть много жанров.
Пожалуйста, используйте способ сохранения ассоциированный.
Подготовьте ваши данные в контроллере следующим образом:
$this->data['Instrument'] = array(
array('instrument_field1'=>'v1',
'instrument_field2' => 'v2',
),// first instrument
array('instrument_field1' => 'v1',
'instrument_field2' => 'v2')// second instrument
);
$this->data['Genre'] = array(
array('field1'=>'v1',
'field2' => 'v2',
),// first genre
array('field1' => 'v1',
'field2' => 'v2')// second genre
);
ИЛИ в ваших формах вы делаете что-то вроде этого:
$this->Form->input('Instrument.0.field1'); // for the first instrument
$this->Form->input('Instrument.1.field1'); // for the second instrument
Прокомментируйте мой ответ, если я неправильно понял вопрос.