Получение данных POST с помощью CakePHP без помощника по формам - PullRequest
5 голосов
/ 20 октября 2011

Я пытаюсь передать переменную POST одному из моих контроллеров, однако я делаю это со статической страницы (я знаю, не самый чистый и эффективный способ решения проблем. Но ради обучения ...). Как я могу прочитать эту переменную POST в моем контроллере, если данные POST отправляются без формы FormHelper?

Я публикую данные с помощью jQuery ajax, так что это без родного CakePHP "FormHelper".

Имеет ли это смысл? Дайте мне знать, если мне нужно уточнить. Я ценю любую помощь, которую вы можете оказать:)

Ответы [ 4 ]

6 голосов
/ 20 октября 2011

Не забывайте, что Cake - это просто PHP.

class BazController extends AppController {

    function foo() {
        $foo = $_POST['bar'];
        $this->set('foobar', $foo);
    }

}

совершенно правильно.Но я бы поступил так, как подсказывает @dhofstet, потому что он гораздо более «сладкий».

6 голосов
/ 20 октября 2011

Вы должны иметь доступ к данным с помощью:

$this->params['form']['YOUR_VARIABLE_NAME']

И если вы будете следовать соглашению об именах, используемому FormHelper, и назовете свое поле ввода как data[ModelName][FieldName], тогда вы можете получить доступ к данным какобычно с:

$this->data['ModelName']['FieldName']
2 голосов
/ 29 апреля 2017

Вы должны иметь доступ к данным постов с:

Для CakePHP 2.x

if ($this->request->is('post')) {
    pr($this->request->data);
}

Для CakePHP 3.4.x

if ($this->request->is('post')) {
    pr($this->request->getData());
}

Пожалуйста, для дальнейшего ознакомления прочитайте руководство. Намного проще и лучше самому разобраться.

Документация для CakePHP 2.x

Документация для CakePHP 3

0 голосов
/ 17 сентября 2015

Для CakePHP 2.x это

$this->request->data['ModelName']['field_name'];

или

$_POST['data']['ModelName']['field_name'];

Первый вариант рекомендуется.

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