Odáig eljutottam, hogy az űrlapot azt le tudom generálni foreach-al.
foreach($userFeatureNames as $userFeatureName):
/*Legeneráljuk a user_feature_names tábla alapján
* az egyéni kérdéseket amit feltettünk a usernek.*/
if($userFeatureName['UserFeatureName']['required'] == true) {
//Típus ellenőrzés 1 = VARCHAR
if($userFeatureName['UserFeatureName']['type_id'] == 1) {
//Rejtett mező, mely tárolja a user_feature_names id-ét
echo $this->Form->input('UserFeatureNames.'.$counter.'.id', array(
'type' => 'hidden',
'value' => $userFeatureName['UserFeatureName']['id']
)
);
A $ counter számláló, mely minden ciklusban 1-el nő. Ezek előtt az inputok előtt ugye ott vannak azok az inputok, amik a user táblába kerülnek mentésre.
Majd ezt a következőképpen menteném:
function registration() {
if(!empty($this->data)) {
if($this->data['User']['password'] == $this->Auth->password($this->data['User']['password_confirm'])) {
$this->data['User']['group_id'] = 2;
$this->User->create();
$this->User->save($this->data);
$counter = 0;
foreach($this->data as $data1):
$this->UserFeature->create();
$data2 = array(
'_value' => $data1['UserFeatures'][$counter]['_value'],
'user_feature_name_id' => $data1['UserFeatureNames'][$counter]['id'],
'user_id' => $this->User->id
);
$this->UserFeature->save($data2);
$counter++;
endforeach;
}
else {
$this->Session->setFlash(__('The two passwords do not match!', true));
}
}
else {
$this->Session->setFlash(__('The user could not be saved. Please, try again.', true)); //Ha a data tömb üres, akkor nem tudtunk menteni
}
Azonban ez így nem jó, mert kidobja hibának, hogy Undefined index: UserFeatures és Undefined index: UserFeatureNames.
A Controllerből valahogy ki tudom íratni képernyőre a $this->data tömböt, hogy lássam mi van benne?