Zend Framework - Отправить не содержит данных поста - PullRequest
4 голосов
/ 26 мая 2011

Моя проблема похожа на При отправке формы не отображаются ее данные POST и связанные вопросы, но предлагаемые решения не применимы к моему проекту, поэтому в настоящее время я не использую перенаправления.

Я пытаюсь изучить Zend Framework. В текущем проекте, над которым я работаю, возникла проблема, когда суперглобальные переменные $ _POST и $ _GET, переданные из моей формы, возвращаются пустыми. Я работал над тем, чтобы упростить проблему, чтобы определить, где она вызывается, но я, кажется, попал в кирпичную стену. Похоже, что данные POST вообще не отправляются ...

My View:

<form method="post" action="/character/addsubmit">
    <input type=hidden name='test' id='test' value='test'>
    <input type='submit'>
</form>

Мой контроллер:

<?php
    class CharacterController extends Zend_Controller_Action
    {
        public function addsubmitAction()
        {
            Zend_Debug::dump($this->getRequest());

            echo "<br/>\$_POST: <br/>";
            print_r($_POST);
            echo "<br/>\$_GET: <br/>";
            print_r($_GET);
            echo "<br/><br/>";

            if($this->_request->isPost()) {
                echo "\$_POST Found<br/>";
            }
            else {
                echo "\$_POST Not Found <br/>";
            }

            if ($this->_request->isGet()) {
                echo "\$_GET Found<br/>";
            }
            else {
                echo "\$_GET Not Found<br/>";
            }
        }
    }
?>

Перейдя к форме, затем отправив (нажав на кнопку отправки), я получаю следующий вывод:

object(Zend_Controller_Request_Http)#8 (15) {
  ["_paramSources:protected"] => array(2) {
    [0] => string(4) "_GET"
    [1] => string(5) "_POST"
  }
  ["_requestUri:protected"] => string(20) "/character/addsubmit"
  ["_baseUrl:protected"] => string(0) ""
  ["_basePath:protected"] => NULL
  ["_pathInfo:protected"] => string(20) "/character/addsubmit"
  ["_params:protected"] => array(3) {
    ["controller"] => string(9) "character"
    ["action"] => string(9) "addsubmit"
    ["module"] => string(7) "default"
  }
  ["_rawBody:protected"] => NULL
  ["_aliases:protected"] => array(0) {
  }
  ["_dispatched:protected"] => bool(true)
  ["_module:protected"] => string(7) "default"
  ["_moduleKey:protected"] => string(6) "module"
  ["_controller:protected"] => string(9) "character"
  ["_controllerKey:protected"] => string(10) "controller"
  ["_action:protected"] => string(9) "addsubmit"
  ["_actionKey:protected"] => string(6) "action"
}

$_POST: 
Array ( ) 
$_GET: 
Array ( ) 

$_POST Not Found 
$_GET Found

Единственное, что действительно бросает меня в тупик, это то, что функция isGet возвращает true ..

Кто-нибудь с большим знанием Zend имеет представление о том, почему у меня так много проблем с отправкой форм с этой структурой? Есть ли какая-то конфигурация, которую я мог пропустить или, возможно, установил неправильно, что могло бы вызвать это?

Примечание: я использую Zend_Form для самого приложения, а также использую большую часть самого фреймворка, но я уменьшил его, пытаясь отладить эту проблему. Если вам потребуется дополнительная информация о моей конфигурации, я смогу предоставить ее.

Спасибо!

Редактировать:

Содержимое моего файла .htaccess:

[Я удалил эти строки, потому что это был неправильный файл, Я все еще ищу правильный.]

Ответы [ 2 ]

2 голосов
/ 01 октября 2011

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

https://serverfault.com/questions/127674/mysteriously-empty-post-array

Я только что настроил локальную среду разработки LAMP, и при заполнении моей базы данных через phpMyAdmin изменил директиву post_max_size php.ini, чтобы разрешить загрузку большого дампа SQL. К сожалению, я набрал 1G как 1GB в INI-файле. PHP интерпретировал это как ограничение в 1 байт, которое, естественно, превышает все мои представления POST, поэтому они поступали как пустые массивы.

Проверьте журнал ошибок вашего сервера на наличие чего-то похожего на следующее:

[Sat Oct 01 17:08:07 2011] [error] [client 127.0.0.1] PHP Warning:  Unknown: POST Content-Length of 63 bytes exceeds the limit of 1 bytes in Unknown on line 0, referer: http://localhost/[...]
0 голосов
/ 26 мая 2011

Вы пробовали

$this->_request->getParams();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...