1
我正在为Silex中的Forms组件开发自定义字段。此字段的目的是呈现和验证验证码图像/值。在自定义服务提供程序中使用会话
我能够添加一个FormExtension来注册我的自定义类型。
我正在注入$app['session']
以便能够在会话中存储验证码值。一切似乎按预期工作,直到我开始接触会议。
这是我得到的错误:
Failed to start the session because headers have already been sent.
下文是我如何注册我的FormExtension以及它如何instanciates自定义字段类型:
$app->register(new FormServiceProvider());
$app['form.extensions'] = $app->share(
$app->extend('form.extensions', function ($extensions) use ($app) {
$extensions[] = new CaptchaFormExtension($app['captcha.options'], $app['session']);
return $extensions;
})
);
class CaptchaFormExtension extends AbstractExtension
{
private $session;
private $options;
public function __construct($options = array(), Session $session)
{
$this->options = $options;
$this->session = $session;
}
protected function loadTypes()
{
return array(
new CaptchaType($this->options, $this->session)
);
}
}
谢谢。这有很大帮助。我使用PDO会话,安全组件中的某些内容试图启动NativeFileSession。我刚刚在应用程序开始时开始会话。 – lucian303