Symfony text带数据转换器的区域字段
我有一个带有textarea字段(用户在其中添加域名,每行一个)的表单和一个从字符串转换为数组的数据转换器:Symfony text带数据转换器的区域字段,symfony,symfony-forms,Symfony,Symfony Forms,我有一个带有textarea字段(用户在其中添加域名,每行一个)的表单和一个从字符串转换为数组的数据转换器: $builder->add( $builder->create('domains', 'textarea', [ 'trim' => false, 'constraints' => [ new Assert\NotBlank(),
$builder->add(
$builder->create('domains', 'textarea', [
'trim' => false,
'constraints' => [
new Assert\NotBlank(),
new Assert\All([
'constraints' => [
new Assert\NotBlank(),
new Domain(),
new RegisterDomain(),
]
])
]
])->addModelTransformer(new ArrayToStringTransformer())
);
阵列串变压器
public function transform($values)
{
if (empty($values)) {
return '';
}
return implode($this->delimiter, $values);
}
public function reverseTransform($string)
{
if (!$string) {
return [];
}
return array_filter(array_map('trim', explode($this->delimiter, $string)));
}
每个域应位于新行上。
但是,当我在reverseTransform上获得字符串值时,该值不会带来新行。我已经在我的字段中将选项trim设置为false
知道为什么会这样吗
我的分隔符是:'\n',但我已尝试使用'\r\n'
看来解决方案是使用双引号而不是单引号。
因此,如果我使用“\r\n”,一切都会正常工作。
谢谢。输入数据中的换行可以有两种形式:
\r
或\n
。使用这两种方法拆分数据
return implode("\r\n", $values);