Составная форма PHP Kohana 3.2.2 $_POST не устанавливается на MAC, но работает на Win

Я только что столкнулся со странной проблемой. Недавно я разработал веб-сайт среднего размера, используя Kohana 3.2.2 + jquery + html + WAMP на платформе Windows 7. И все работает нормально, пока кто-то не попытается получить доступ к странице с платформы Mac. Кажется, что при отправке некоторых данных с файлами в составной форме глобальная переменная $_POST не установлена, хотя при отладке данных в веб-браузере я вижу, что ДАННЫЕ УСТАНОВЛЕНЫ: | он просто недоступен контроллеру с помощью $_POST или request->post(). Повторяю, все работает отлично, когда пользователь заходит на страницу с платформы Windows (проверено на нескольких отдельных клиентах), но не работает при доступе с платформ Mac (проверено на нескольких отдельных клиентах). Меня это убивает...
Пример того, что я пытаюсь сделать:
In View:
пользователь помещает данные во входные данные (текст и типы файлов). Данные отправляются формой с enctype = multipart/form-data в действие контроллера
В контроллере:
$post = request->post();
if($post ['sometextinput'] != '') выдает исключение неизвестного индекса 'sometextinput'.


person user1455750    schedule 16.10.2012    source источник


Ответы (2)


Это очень странно. Я использую Kohana ежедневно (разрабатываю на Mac) и никогда не сталкивался с такой проблемой. Не могли бы вы опубликовать свой контроллер и представление? Я включу его в фиктивный проект и посмотрю, смогу ли я воспроизвести проблему. Если я могу, я сделаю все, что в моих силах, чтобы заставить его работать.

РЕДАКТИРОВАТЬ:

Может ли это быть странной проблемой конфигурации?

Просто для моего собственного разъяснения.

Вы отправляете форму, которая содержит поля ввода и один или несколько загружаемых файлов.
При просмотре на компьютере с Windows вы можете увидеть, что данные установлены в $_POST или $request->post().
В OSX контроллер не может просмотреть его через $_POST или $request->post();

В вашем методе before убедитесь, что у вас есть «parent::before();». Если вы уже вызываете parent::before(), попробуйте поместить его в качестве первого оператора в методе before(). Если это не сработает, попробуйте добавить его в качестве последнего оператора. Это выстрел в темноте, но стоит попробовать.

Если у вас нет метода before(), добавьте его и вызовите parent::before();.

person William    schedule 19.10.2012
comment
Мне удалось заставить его работать. Проблема была с размером загруженного файла. Атрибут максимального размера файла не был установлен в файле .htacces. Я добавил его, и теперь все работает нормально. Но спасибо за ваш вклад :) - person user1455750; 23.10.2012

Я не уверен, что вы просто спешили напечатать свой пример выше, но на самом деле это должно быть так:

#$post = request->post(); //wouldn't recommend doing this
if($this->request->post('sometextinput') != '') throws exception of unknown index 'sometextinput'.
person pogeybait    schedule 20.10.2012