Reputation: 13
I have to manipulate the data posted before saving it. $this->data is an array like this
Array
(
[Presence] => Array
(
[Month] => 02
[Year] => 2012
[0] => Array
(
[day] => 1
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[1] => Array
(
[day] => 2
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[2] => Array
(
[day] => 3
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[3] => Array
(
[day] => 4
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[4] => Array
(
[note] =>
)
[5] => Array
(
[note] =>
)
[6] => Array
(
[day] => 7
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[7] => Array
(
[day] => 8
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[8] => Array
(
[day] => 9
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[9] => Array
(
[day] => 10
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[10] => Array
(
[day] => 11
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[11] => Array
(
[note] =>
)
[12] => Array
(
[note] =>
)
[13] => Array
(
[day] => 14
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[14] => Array
(
[day] => 15
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[15] => Array
(
[day] => 16
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[16] => Array
(
[day] => 17
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[17] => Array
(
[day] => 18
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[18] => Array
(
[note] =>
)
[19] => Array
(
[note] =>
)
[20] => Array
(
[day] => 21
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[21] => Array
(
[day] => 22
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[22] => Array
(
[day] => 23
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[23] => Array
(
[day] => 24
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[24] => Array
(
[day] => 25
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[25] => Array
(
[note] =>
)
[26] => Array
(
[note] =>
)
[27] => Array
(
[day] => 28
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[28] => Array
(
[day] => 29
[presenza] => 1
[time_in] => 09:00
[time_out] => 18:00
[pausa] => 01:00
[hours] => 08:00
[client_id] => 4
[note] =>
)
[user_id] => 3
)
)
and I have to modify the day and insert the user_id in every "sub-array".
But when i call, just for debugging, debug($this->data) on my beforeSave() the result is an empty array and I can't do nothing.
Upvotes: 1
Views: 881
Reputation: 34837
The beforeSave method should only return either true
or false
to tell the save function if it may continue, so you can only put logic there, but not affect the data itself.
To modify the data, just (re)-set it in your controller function before calling the save function, like:
foreach($this->data['Presence'] as $key => $data) {
if(is_array($key)) {
// This should be a sub-array
$this->data['Presence'][$key]['day'] = 1; // Set your 'new' day here
$this->data['Presence'][$key]['user_id'] = 1337; // Set your user id here
}
}
// Then, afterwards, save the adjusted data array
$this->Presence->save($this->data);
Upvotes: 1