$ This-> данные CakePHP - PullRequest
       3

$ This-> данные CakePHP

1 голос
/ 11 июля 2010

У меня есть приложение, загруженное с формами в каждом представлении.Я довольно хорошо разбираюсь в синтаксисе массивов CakePHP и часто использую параметр $ this-> data.

Я влюбился в тощие контроллеры и толстые модели, поэтому я добавил столько кода в свои моделивозможно.Если я не делаю что-то сложное, большинство моих методов контроллера выглядят так:

function some_action() {
    $this->set('data', $this->Model->some_action($this->data));
}

Затем в моей модели есть метод, который принимает один параметр:

function some_action($this_data = NULL) {
    // do some stuff, manipulate the data etc.
    $this->create();
    if ($this->save($this_data)) {
        // return success message here
    }
}

Я упростил, но вы поняли идею.

Мой вопрос: я всегда отправляю $ this-> data в свою модель и ловлю ее переменной $ this_data.Тем не менее, мне было интересно, если это один шаг слишком много?Модель наследует $ this-> data?Если да, могу ли я изменить приведенный выше метод контроллера следующим образом:

function some_action() {
    $this->set('data', $this->Model->some_action());
} 

И затем манипулировать данными $ this-> в моей модели вместо переменной $ this_data, которую я использовал?Какова будет лучшая практика?

Ответы [ 2 ]

1 голос
/ 15 июля 2010

Однако вы можете сделать следующее:

В вашем контроллере

$this->Model->create($this->data);
$this->set('data', $this->Model->some_action());

Таким образом, вы можете получить доступ к данным вашей модели, используя $ this-> data в вашей Model :: some_action ();

1 голос
/ 12 июля 2010

Хорошая идея, но, к сожалению, вы должны передать $this->data в качестве параметра, потому что контроллер и модель в торте расширены от diffrent parent-objects.So $this->data имеет различные значения. В контроллере атрибут $data равен для получения данных POST, в то время как это контейнер для выбранных данных модели в модели . И я предлагаю вам прочитать исходный код в app/cake/lib/controller/controller.php

и

app/cake/lib/model/model.php

Это сделало бы вас более ясным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...