public function buildForm(FormBuilderInterface $builder, array $options)
{
$app = $this->app;
$builder->add('admin_route_dir', 'text', array('label' => 'ディレクトリ名', 'constraints' => array(new Assert\NotBlank(), new Assert\Length(array('max' => $this->config['stext_len'])), new Assert\Regex(array('pattern' => "/^[0-9a-zA-Z]+\$/")))))->add('admin_allow_host', 'textarea', array('required' => false, 'label' => 'IP制限', 'constraints' => array(new Assert\Length(array('max' => $this->config['stext_len'])))))->add('force_ssl', 'checkbox', array('label' => 'SSLを強制', 'required' => false))->addEventListener(FormEvents::POST_SUBMIT, function ($event) use($app) {
$form = $event->getForm();
$data = $form->getData();
$ips = preg_split("/\\R/", $data['admin_allow_host'], null, PREG_SPLIT_NO_EMPTY);
foreach ($ips as $ip) {
$errors = $app['validator']->validateValue($ip, array(new Assert\Ip()));
if ($errors->count() != 0) {
$form['admin_allow_host']->addError(new FormError($ip . 'はIPv4アドレスではありません。'));
}
}
});
}