Php 自定义表单元素工厂-选项在哪里?
我正在尝试创建一个自定义表单元素,基本上一切都正常——但我希望正确地使用“name”。让我解释一下:Php 自定义表单元素工厂-选项在哪里?,php,zend-framework2,zend-form,factory,Php,Zend Framework2,Zend Form,Factory,我正在尝试创建一个自定义表单元素,基本上一切都正常——但我希望正确地使用“name”。让我解释一下: use Application\Form\Element\Custom; class CustomForm extends Form { public function init(){ $this->add([ 'name' => 'themagicname', 'type' => Custom::
use Application\Form\Element\Custom;
class CustomForm extends Form
{
public function init(){
$this->add([
'name' => 'themagicname',
'type' => Custom::class,
]);
}
}
我有一个实例化自定义元素的表单,自定义元素在我的module.config.php
中映射为:
use Application\Form\Element\Custom;
use Application\Factory\Form\Element\CustomFactory;
return [
//...
'form_elements' => [
'factories' => [
Custom::class => CustomFactory::class,
],
],
//...
];
工厂看起来像这样,并且被正确地解雇了:
class CustomFactory implements Factory
{
public function createService( ServiceLocatorInterface $serviceLocator )
{
/**
* @var \Doctrine\Common\Persistence\ObjectRepository $userRepository
* @var \Zend\InputFilter\InputFilterPluginManager $serviceLocator
*/
// bunch of factory-ish things here
return new Custom( 'helpppp', ... );
}
}
现在的难题是:在我写“helpppp”的地方,理想情况下可以传输在表单级别创建过程中传递的“themagicname”。配置阵列如何运送到工厂?我尝试了mutableCreationOptions接口
,但它似乎不适用于这里
谢谢你的指导。我不太清楚你所说的“在形式层面”是什么意思。您可以使用
$form->add(array(…)
,而不是使用init()
,在工厂内将表单元素添加到表单中。您找到如何从工厂内访问自定义表单的参数了吗?