CakePHP 2 beforeSave()不工作
我必须在保存之前处理发布的数据。 $this->data是这样的数组CakePHP 2 beforeSave()不工作,php,cakephp,before-save,Php,Cakephp,Before Save,我必须在保存之前处理发布的数据。 $this->data是这样的数组 Array ( [Presence] => Array ( [Month] => 02 [Year] => 2012 [0] => Array ( [day] => 1 [presenza]
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
)
)
我必须修改日期并在每个“子数组”中插入用户id
但是,当我调用beforeSave()时,只是为了调试,debug($this->data)的结果是一个空数组,我什么也做不了。beforeSave方法应该只返回
true
或false
,告诉save函数它是否可以继续,所以你只能将逻辑放在那里,而不会影响数据本身
要修改数据,只需在调用save函数之前在控制器函数中(重新)设置它,如:
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);
beforeSave方法应该只返回
true
或false
,告诉save函数是否可以继续,因此您只能将逻辑放在那里,而不会影响数据本身
要修改数据,只需在调用save函数之前在控制器函数中(重新)设置它,如:
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);
在“添加控制器”功能中实现所有这些功能可以使其正常工作,但根据MVC这样做是否正确?只是说,您可以(并且根据MVC,您可能应该)在保存之前修改数据。@luisclement如果您重新设置
$this->data
数组的任何键,您是对的,它将按此方式保存。在“添加控制器”函数中使所有这些都正常工作,但根据MVC这样做是否正确?只是说,您可以(并且根据MVC,您可能应该)在保存之前修改数据。@LuisClemente如果您重新设置$this->data
数组的任何键,您是对的,它将被保存为这样。