Zend, похоже, не хочет загружать форму, которую я создал - PullRequest
2 голосов
/ 19 октября 2010

Эй, я, кажется, поднимаюсь по довольно ужасной кривой обучения.Мне требуются часы, чтобы даже добраться до точки, где я могу структурировать / написать код.Изначально я хотел иметь возможность хранить форму или модель внутри соответствующего модуля, например: ./application/module/ModuleName/forms/ClassName.php, но когда я попытался создать экземпляр класса с помощью: $ form = new ModuleName_Form_ClassName ();это не удалось.Поэтому я решил упростить все, переместив его в модуль по умолчанию.Однако это все еще не работает.Я все еще делаю что-то не так.Я понятия не имею, что.

Внутри моего действия контроллера у меня есть это:

// some other code
$form = new Form_Login();

При загрузке действия я получаю это сообщение об ошибке:

Fatal error: Class 'Form_Login' not found in /some folder/www/application/modules/default/controllers/AdministrationController.php on line 22

Мой application.ini содержит:

appnamespace = "SomeModule"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] = 

Форма хранится внутри ./application/modules/default/forms/Login.php

1.Как я могу устранить это?Я получаю сообщение об ошибке рядом с бесполезным.

2.Я действительно думаю, что все мои проблемы могли бы быть решены, если бы был какой-то способ отладки функции __autoload ().Разве нет?

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

Приветствия,

Больной новичок в разработке Zend.

1 Ответ

5 голосов
/ 20 октября 2010

Звучит так, словно у тебя это было почти в первый раз. Допустим, ваш модуль - «Пользователи», а ваша форма - «Логин». Для того, чтобы application/module/users/forms/Login.php работал:

  • Класс формы, определенный в этом файле, должен называться Users_Form_Login
  • Вам нужно resources.modules[] = в вашем application.ini для инициализации ресурса модуля (который у вас есть)
  • Вам нужен модуль начальной загрузки для этого модуля (это то, что настраивает автозагрузчик модуля). Так что минимально вам нужен класс начальной загрузки, подобный этому:

.

class Users_Bootstrap extends Zend_Application_Module_Bootstrap
{

}

определено на application/module/users/Bootstrap.php. Пути чувствительны к регистру.

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

...