Хотите, чтобы CakePHP 1.1 работал на PHP 5.3 - PullRequest
1 голос
/ 03 апреля 2012

Я управляю веб-сайтом CakePHP 1.1 CMS, и наши хосты только что обновили PHP до 5.3, вызвав ряд ошибок, таких как:

Notice: Undefined variable: banner_image in /home2/intiwara/cake/app/views/layouts/public_site.thtml on line 49
Notice: Undefined variable: news_menu in /home2/intiwara/cake/app/views/articles/volunteer_animal_refuge.thtml on line 73

Я могу скрыть ошибки, изменив cake / cake / libsСтрока 133 /configure.php должна быть:

error_reporting(E_ERROR);

Однако переменные и модели все еще не найдены, поэтому страница не отображается.

Я понимаю, что мне нужно перейти на CakePHP 2.1,и каждый пост, который я нахожу, посвящен этому.Тем не менее, я здесь единственный технический волонтер, завтра у меня будет всего несколько часов, чтобы сайт заработал, а потом я нахожусь в автономном режиме в течение двух недель в сельской Эфиопии, так что я надеюсь, что есть «обходное» решение, которое я смогупоставить на место в то же время.(Хозяева не сказали нам, что это должно было произойти ..)

Мне не нужны функции администратора, я не против скрывать ошибки - мне просто нужен сайт для рендеринга.Можно ли как-нибудь обмануть PHP 5.3, чтобы «увидеть» эти переменные?

Большое спасибо, Крис

Ответы [ 2 ]

3 голосов
/ 06 апреля 2012

Вот комментарии SVN от моего преобразования с 1.1 до 1.2.Я не потрудился привести их в порядок (за исключением нечетного «ED:»), так как я, вероятно, последний человек, который обновил CakePHP 1.1, и я должен выключить свет, когда уйду .. Это шаги послеЯ сделал стандартные обновления «замененный каталог тортов» и «конфигурация», подробно описанные в приложениях на сайте CakePHP: http://book.cakephp.org/view/3/The-Manual#!/1.2/en/view/411/Migrating-from-CakePHP-1-1-to-1-2.

Мне потребовалось два дня, чтобы обновить достаточно простую CMS с моим ржавым PHPи усилия отговорили меня от использования CakePHP снова из-за ужасной документации и тонкостей, связанных с использованием интегрированной среды.(Хотя я потратил полдня часов, когда мой хост подумал, что один из моих файлов шаблонов был вирусом, поэтому заблокировал каждый IP-адрес, на который я смог попасть.)

Самый большой случай сэкономил бы, если бы я заметил форму-> ошибка как замена html-> tagErrorMsg.Вместо этого я удалил их все, поместил ошибки в модели в соответствии со стандартной практикой в ​​1.2, а затем снова добавил их все.form-> input отображает ошибки автоматически, но мне было проще использовать form-> select чем form-> input ('type' => 'select' .. из-за сложности преобразования опций и параметров из html->выберите для формирования-> ввода с использованием регулярных выражений.

  1. Помощник HTML, перенесенный в помощник формы

  2. -> renderElement () должен измениться на -> element ()

  3. -> del () необходимо изменить на -> delete ()

  4. generateList () необходимо перенести вfind ('list', array ())

  5. VALID_EMAIL, VALID_NOT_EMPTY (и VALID_NUMBER) заменены на массив ('rule' => array ('email')) и array ('rule'=> array (' minLength ', 1)) - ED: позже они были обновлены и теперь включали сообщения об ошибках по умолчанию, хотя я думаю, что мне не нужно, если бы я знал о form-> error (

  6. изменена форма-> ввод в форму-> текстовая форма-> отправить форму-> пароль Посмотрите код здесь https://github.com/zeroasterisk/CakePHP-cake_up-shell/blob/master/cake_up.php, чтобы получить некоторую полезную подробную информацию.

  7. Controller this-> redirects теперь относительны в 1.2, поэтому я поставил начальную букву "/" там, где не было в версии 1.1

  8. form-> input (Model / property =>form-> text (Model.property html-> tagValue (Model / property => html-> value (Model.property html-> selectTag (Model / property => form-> select (Model.property $ form-> textarea ('Article.intro $ form-> labelTag (' Article.body

  9. сообщения об ошибках теперь указываются в модели, а не в файлах шаблонов, за исключением сгенерированных контроллером ошибок, таких как дублирование имени пользователя при добавленииuser - они устанавливаются так же, как и раньше, но отображаются просто с помощью echo $ username_error - ED: это также было ошибкой - позже изменилось на form-> error ('model.field', $ custom_error, опции, например, класс css)html-> labelTag => form-> label tagValue => значение selectTag => select в сгенерированном хелпером HTML, используйте точку-разделитель в качестве разделителя поля model. вместо косой черты, например, html-> value (model.field) вместо этогоhtml-> tagValue (модель / поле)

  10. Remove san-> sql и cleanUpFields Удалите сообщения об ошибках по умолчанию tagErrorMsg - ED: это и большая часть моего обновления проверки были ошибкой - я должен был заменить html-> tagErrorMsg на form-> errorк новой ошибке в 1.2, которая не может отображать акценты в опции

  11. создание model.saveString для генерации оператора вставки sql, похоже, работает (ED: я бы поместил метод в ядроCakePHP, который сгенерировал для модели INSERT stmnt, что позволяет мне делать автоматическое резервное копирование по электронной почте)

  12. Альтернативный способ отображения ошибок с использованием интегрированной формы -> метод ввода - более элегантный, отображает ошибки ивсе типы управления вводом HTML, но регулярное выражение для замены определенных вызовов на сложные массивы параметров настройки было бы слишком сложным / ненадежным.

  13. В контроллере заменена модель-> проверяет (модель)с этим-> set (this-> data) затем модель-> validates ()

  14. Проверка: добавлена ​​форма-> вызовы ошибок для каждого входа.(ED: должен был использовать поиск по регулярному выражению и заменить html-> tagErrorMsg на form-> error..это бы сэкономило много усилий по преобразованию)сделать недействительным имя поля и в шаблоне, поле в форме-> ошибка должно совпадать с этим именем поля, даже если оно не является именем поля модели, например, password1 и password2.

0 голосов
/ 03 апреля 2012

Если вы будете следовать соглашениям, вам может повезти, и вы сможете перейти на 1,3 за разумное время, если у вас более высокий уровень опыта работы с CakePHP. От 1.1 до 2.1 ... это не будет так гладко.

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

Если это действительно что-то критически важное, свяжитесь со мной наедине, и я свяжусь с вами в компании, которая может это сделать.

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