Форма Zend Framework не найдена

В моем public/index.php я определяю путь включения:

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    '/var/www/php_include/zend/1.11.7/library',
    '/var/www/php_include/application',
    get_include_path(),
)));

В моем IndexController я хочу сослаться на свою форму с помощью

new Form_Login();

Но тут я получаю ошибку:

Неустранимая ошибка: класс LoginForm не найден в /var/www/php_include/application/controllers/LoginController.php в строке 31

Форма находится под application/forms/Login.php:

class Form_Login extends Zend_Form
{
    public function init()
    {

get_include_path() перед использованием new LoginForm() бросков:

/var/www/php_include/application/../library:/var/www/php_include/zend/1.11.7/lib‌ rary: / var / www / php_include / application: / var / www / php_include / application / forms :.: / v‌ ar / www / php_include: / usr / share / pear / PEAR

Кто-нибудь знает, как заставить это работать?


person frgtv10    schedule 28.06.2011    source источник
comment
Не могли бы вы добавить определение своей LoginForm?   -  person Phliplip    schedule 28.06.2011


Ответы (3)


Автозагрузчик не найдет меня сфинкс. Просто добавьте свой forms/ путь к пути включения.

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    '/var/www/php_include/zend/1.11.7/library',
    '/var/www/php_include/application',
    '/var/www/php_include/application/forms',
    get_include_path(),
)));

Теперь переименуйте файл в LoginForm.php, а имя класса - в LoginForm.

Затем используйте

new LoginForm(); 

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

Обновить

Это часть моего класса Bootstrap:

function _initAutoloader() {
    $autoloader = Zend_Loader_Autoloader::getInstance();
    $autoloader->setFallbackAutoloader(true);
    return $autoloader;
}
person Phliplip    schedule 28.06.2011
comment
форма находится в файле forms / LoginForm.php и, начиная с класса LoginForm, расширяет Zend_Form. Добавлен / var / www / php_include / application / forms в public / index.php. Использование новой формы LoginForm (); чтобы получить его ... все еще - ›Неустранимая ошибка: класс 'LoginForm' не найден в /var/www/php_include/application/controllers/LoginController.php в строке 31 - person frgtv10; 28.06.2011
comment
Я не получаю ошибок из стека сообщений, только из php. И get_include_path () перед использованием нового LoginForm () выдает: /var/www/php_include/application/../library:/var/www/php_include/zend/1.11.7/library:/var/www/php_include/application: /var/www/php_include/application/forms:.:/var/www/php_include:/usr/share/pear/PEAR - person frgtv10; 28.06.2011
comment
может проблема в application.ini? - person frgtv10; 28.06.2011
comment
Хм .. может МОЙ автозагрузчик действительно работает, значит, у меня работает. Возможно, ВАШ автозагрузчик не работает должным образом. Я обновил свой ответ частью моего класса начальной загрузки. - person Phliplip; 28.06.2011
comment
Вот и все :) БОЛЬШОЕ СПАСИБО! Мне действительно нужно взглянуть на framework.zend.com/manual /de/zend.loader.autoloader.html - person frgtv10; 28.06.2011
comment
см. загрузчик типа ресурса в специальном. - person Rufinus; 28.06.2011
comment
Спасибо, это было действительно полезно. - person Matheno; 19.03.2015

ваш класс должен называться Form_LoginForm, чтобы его нашел автозагрузчик.

Но вы должны изменить его на Form_Login и forms/Login.php

person Rufinus    schedule 28.06.2011
comment
Изменен на класс Form_Login и переименован в /forms/Login.php не работает: / - person frgtv10; 28.06.2011
comment
Разве 's' в каталоге форм не испортит ситуацию? что, если вы переименуете forms/ в form/? - person Phliplip; 28.06.2011
comment
не имеет значения. та же проблема. - person frgtv10; 28.06.2011

пытаться

new Default_Form_LoginForm();
person heximal    schedule 28.06.2011