У меня очень странная проблема. При использовании моей среды разработки (хост с Windows на Ubuntu Guest) следующий код работает нормально. Однако, когда на сервере linux или даже если я копирую файлы в гостевую систему Ubuntu, но в собственном направлении (не для общего доступа с хоста), код завершается ошибкой. Ошибка, которую я получаю:
Zend\Form\FormElementManager::get was unable to fetch or create an instance for RA\Restriction\Form\ValueFieldset
Так что проблема в том, что он никогда не сможет найти файл. Трассировка стека умирает в
/vendor/zendframework/zendframework/library/Zend/ServiceManager/AbstractPluginManager.php(103): Zend\ServiceManager\ServiceManager->get('RA...', true)
Вот как выглядит мой файл формы
namespace RA\Restriction\Form;
use Zend\Form\Form;
use Zend\Form\Element;
use Zend\InputFilter\InputFilter;
class RestrictionValueForm extends Form
{
public function __construct($name = null)
{
// we want to ignore the name passed
parent::__construct('attribute');
$this->setAttribute('method', 'post')
->setInputFilter(new InputFilter());;
$this->add(array(
'name' => 'restriction_id',
'attributes' => array(
'type' => 'hidden',
'id' => 'restriction_id',
),
));
$this->add(array(
'type' => 'collection',
'name' => 'value_name',
'options' => array(
'count' => 2,
'should_create_template' => true,
'template_placeholder' => '__placeholder__',
'label' => '',
'target_element' => array(
'type' => 'RA\Restriction\Form\ValueFieldset',
),
),
));
$this->add(array(
'name' => 'submit',
'attributes' => array(
'type' => 'submit',
'class' => 'btn btn-primary mar-right5',
'value' => 'Save',
'id' => 'submitbutton',
),
));
$this->add(array(
'name' => 'cancel',
'attributes' => array(
'type' => 'button',
'class' => 'btn',
'value' => 'Cancel',
'id' => 'cancel',
),
));
}
}
Я работал над этим весь день и не смог придумать решение, я даже создал пару дополнительных сред и убедился, что конфиги были идентичны. Любые предложения будут очень признательны.
Проблема, в моем случае, была чувствительность к регистру. Windows не чувствительна к регистру в структурах каталогов и вообще, но linux чувствительна к регистру.
Я наконец смог решить проблему. Похоже, что в некоторых средах ему не нравилось, что fieldset находится в подкаталоге. Я смог переместить свой набор полей в / RA / src / RA / Form / ValueFieldset и теперь все в порядке.