Когда я делаю debug($this->data)
в методе SalasController reservar()
, $данные из json в порядке, но когда я делаю this->Sala->save($this->data)
и пытаюсь debug($data)
в beforeSave()
вернуть это:
Notice (8): Undefined property: FormataDataBehavior::$data [APP\Model\Behavior\FormataDataBehavior.php, line 52]
\app\Model\Behavior\FormataDataBehavior.php (line 52)
null
SalasController.php
App::uses('AppController', 'Controller');
class SalasController extends AppController {
public $components = array('RequestHandler');
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('listar', 'reservar');
$this->RequestHandler->addInputType('json', array('json_decode', true));
}
public function reservar() {
$this->Sala->save($this->data); //no conditions just for debugging.
}
Модель Sala.php
class Sala extends AppModel {
public $useTable = 'agenda';
public $actsAs = array(
'FormataData' => array('dia')
);
Поведение
class FormataDataBehavior extends ModelBehavior {
// Armazena os campos do model a serem formatados.
public $campos;
//Inicializa o behavior
public function setup(Model $model, $settings = array()) {
if (!empty($settings)) {
$this->campos[$model->name] = $settings;
} else {
throw new MethodNotAllowedException('Campos data não informados na declaração do behavior');
}
}
public function beforeSave(Model $model, $options = array()) {
parent::beforeSave($model, $options);
debug($this->data); //trying show data, but is !isset... =/
die();
}
MyJs
function adicionarReserva() {
var dadosForm = {Sala: {}};
$.each($("#form-reservas").serializeArray(), function(index, value) {
dadosForm.Sala[value.name] = value.value;
});
$.post("/intracake/Salas/reservar.json", dadosForm)
.done(function(data) {
sysMsg(data.html);
atualizaTabelas();
});
}
FormataDataBehavior
— это поведение, а не модель, поэтому я думаю, вам следует использовать$model->data
вместо$this->data
. - person Holt   schedule 20.05.2014$model->data
(я отредактировал свой комментарий),data
является общедоступным атрибутом модели в соответствии с API CakePHP, поэтому вы можете получить к нему доступ из любого места. - person Holt   schedule 20.05.2014$model::$data
, просто$this->data
внутри обратного вызоваbeforeSave()
. book.cakephp.org/2.0/en/models/callback- method.html#beforesave - person Marcelo Aymone   schedule 20.05.2014Model
, а не по классуModelBehaviour
. - person Holt   schedule 20.05.2014&$model
как ссылочный параметр для редактирования некоторых полей вbeforeSave()
? - person Marcelo Aymone   schedule 20.05.2014