Zend Framework не находит формы в модульном приложении - PullRequest
0 голосов
/ 11 января 2012

У меня установлено модульное приложение Zend Framework. Один из моих модулей называется «frontend» и является модулем по умолчанию (resources.frontController.defaultModule = "frontend" находится в моем конфигурационном файле).

У меня есть форма, Frontend_Form_PropertySearch, расположенная в / application / modules / frontend / forms / PropertySearch.php , и я пытаюсь использовать ее в моем контроллере следующим образом:

public function searchAction()
{
    $form = new Frontend_Form_PropertySearch();

    $form->submit->setLabel('Search');
    $this->view->form = $form;
}

Однако я получаю следующую ошибку:

Неустранимая ошибка: класс 'Frontend_Form_PropertySearch' не найден в /Users/Martin/Dropbox/Repositories/realestatecms/application/modules/frontend/controllers/PropertiesController.php в строке 17

Куда я иду не так?

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Одним из решений может быть добавление файла application/modules/frontend/Bootstrap.php и добавление этого (аналогично работе с одним из моих проектов):

<?php
class Frontend_Bootstrap extends Zend_Application_Module_Bootstrap
{
    protected function _initAutoload()
    {
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Frontend_',
            'basePath'  => APPLICATION_PATH .'/modules/frontend',
            'resourceTypes' => array (
                'form' => array(
                    'path' => 'forms',
                    'namespace' => 'Form',
                ),
                'model' => array(
                    'path' => 'models',
                    'namespace' => 'Model',
                ),
            )
        ));
        return $autoloader;
    }
}

Другое решение, описанное akrabat: http://akrabat.com/zend-framework/bootstrapping-modules-in-zf-1-8/

// file application.ini
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] = ""

File: /application/modules/frontend/Bootstrap.php

<?php
class Frontend_Bootstrap extends Zend_Application_Module_Bootstrap
{

}

Второй использует автозагрузчик ресурсов по умолчанию, как описано в документации: http://framework.zend.com/manual/zh/zend.loader.autoloader-resource.html#zend.loader.autoloader-resource.module

0 голосов
/ 12 января 2012

Убедитесь, что ваш INI-файл содержит эти строки

resources.frontController.moduleDirectory = APPLICATION_PATH "/path/to/your/modules"
resources.modules[] =
...