Question

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.

Was it helpful?

Solution

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);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top