Zend framework ZF2在运行时向工厂传递参数
在ZF2中,我有一个多检查盒工厂(简化) 我希望multicheckbox根据映射程序的Zend framework ZF2在运行时向工厂传递参数,zend-framework,zend-framework2,Zend Framework,Zend Framework2,在ZF2中,我有一个多检查盒工厂(简化) 我希望multicheckbox根据映射程序的findText()方法中的$resultFromQuery呈现不同的内容 我想把一个变量传递给\u调用(FormElementManager$FormElementManager$someText)。但问题是,当我从服务管理器调用multicheckbox时,如下所示: $element = $formElementManager->get('Path\To\Factory\Alias\Multich
findText()
方法中的$resultFromQuery
呈现不同的内容
我想把一个变量传递给\u调用(FormElementManager$FormElementManager$someText)
。但问题是,当我从服务管理器调用multicheckbox时,如下所示:
$element = $formElementManager->get('Path\To\Factory\Alias\Multicheckbox');
我不知道如何传递额外的变量。有任何帮助吗?请查看
mutableCreationOptions接口
,这允许您的工厂接收通过serviceManagerget()
方法传递的运行时选项
use Zend\ServiceManager\MutableCreationOptionsInterface;
use Zend\ServiceManager\MutableCreationOptionsTrait;
class MultiCheckboxFactory implements MutableCreationOptionsInterface
{
use MutableCreationOptionsTrait;
public function __invoke(FormElementManager $formElementManager)
{
$options = $this->getCreationOptions();
var_dump($options);
$multiCheck = new MultiCheckbox();
....
}
}
现在,您可以传递选项:
$element = $formElementManager->get('Path\To\Factory\Alias\Multicheckbox', ['foo' => 'bar']);
查看
mutableCreationOptions接口
,这允许您的工厂接收通过serviceManagerget()
方法传递的运行时选项
use Zend\ServiceManager\MutableCreationOptionsInterface;
use Zend\ServiceManager\MutableCreationOptionsTrait;
class MultiCheckboxFactory implements MutableCreationOptionsInterface
{
use MutableCreationOptionsTrait;
public function __invoke(FormElementManager $formElementManager)
{
$options = $this->getCreationOptions();
var_dump($options);
$multiCheck = new MultiCheckbox();
....
}
}
现在,您可以传递选项:
$element = $formElementManager->get('Path\To\Factory\Alias\Multicheckbox', ['foo' => 'bar']);
更新:
MutableCreationOptionsTrait
在ZF3中不再可用:
现在最简单的方法似乎是
$element = $formElementManager->build('Path\To\Factory\Alias\Multicheckbox', ['foo' => 'bar']);
虽然每次都会给您一个离散(非共享)实例。更新:
MutableCreationOptionsTrait
在ZF3中不再可用:
现在最简单的方法似乎是
$element = $formElementManager->build('Path\To\Factory\Alias\Multicheckbox', ['foo' => 'bar']);
虽然每次都会给您一个离散(非共享)实例。+1对于
使用MutableCreationOptionsTrait
:现在我不必为使用MutableCreationOptionsTrait的$createOptions
+1编写访问器代码>:现在我不必为$createOptions
编写访问器。很抱歉响应太慢。据我理解,“共享”是默认值。因此,一个常规的$container->get('whatever')调用会为您提供一个共享实例,但正是由于这个原因,您不能像使用build()一样向它传递任何构造函数选项。很抱歉响应太慢。据我理解,“共享”是默认值。因此,一个常规的$container->get('whatever')调用将为您提供一个共享实例,但正是出于这个原因,您不能像使用build()一样向它传递任何构造函数选项。