2015-05-12 62 views
1

我有一個textarea字段(其中,用戶添加的域名,每個每行),並且從字符串轉換至陣列的數據變壓器的一種形式:textarea的字段

$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()) 
     ); 

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的字符串值不帶新行。我已經在我的領域設置了選項修剪爲假。

任何想法爲什麼會發生這種情況?

我的分隔符是:'\ n',但我已經嘗試過'\ r \ n'。

那麼看來解決方案是使用雙引號而不是單個。 因此,如果我使用「\ r \ n」,一切都按預期工作。

謝謝。

回答

1

輸入數據中的換行符可以採用兩種形式:\r\n。使用它們來分割您的數據。

return implode("\r\n", $values); 
+0

我更新了我的問題 –