내가 심포니에서 엔티티 필드에서 작동하는 dataTransformer를 얻기 위해 노력하고 있어요 2.symfony2 엔티티 양식 필드에 트랜스포머 적용 - 빈 배열?
상황 :
폼 표시 사용자가 (체크 박스)을 선택할 수있는 항해는
이는이다 다단계 항해 주문 절차의 첫 번째 단계 (이후 단계는 각 항해, 색상 등을 위해 사용 가능한 옵션을 표시)
이것은 내 양식 유형 클래스입니다.
위의 내용은 오류없이 작동하지만 변환 된 데이터는 표시하지 않습니다. 뷰는 다음과 같습니다
__ Race main
__ Cruising main
(체크 박스에 대한 __
스탠드)
그러나, 내가 원하는 뷰는 다음과 같습니다
__ Race main ($1400)
__ Cruising main ($800)
내가 가진 변압기된다
use Symfony\Component\Form\DataTransformerInterface;
use Symfony\Component\Form\Exception\TransformationFailedException;
use Doctrine\Common\Persistence\ObjectManager;
use Co\QuoteBundle\Entity\Sail;
use Doctrine\Common\Collections\ArrayCollection;
class SailCollectionToStringsTransformer implements DataTransformerInterface
{
/**
* @var ObjectManager
*/
private $om;
/**
* @param ObjectManager $om
*/
public function __construct(ObjectManager $om)
{
$this->om = $om;
}
/**
* Transforms a collection of sails to a collection of strings.
* @param ISail|null $sail
* @return string
*/
public function transform($sailCollection)
{
if (null === $sailCollection) {
return null;
}
$labels = new ArrayCollection();
foreach($sailCollection as $sail){
$labels[] = $sail->getName().' ($'.$sail->getBuildPrice().')';
}
return $labels;
}
//reverse transformer... not the issue (yet) because the forward transformer doesn't work
}
때 netbeans 디버거를 통해이를 실행하면 빈 배열이 변환기로 전달됩니다. 그러나 라인 58을 ->addViewTransformer($transformer));
으로 변경하고 디버그하면 올바르게 변압기에 대한 배열 키로 돛 아이디가있는 두 개의 부울이 전달됩니다. 불행하게도 원래 문자열을 더 이상 포함하지 않기 때문에 ViewTransformer
을 사용할 수 없습니다.
메인 돛을 포함해야하는 ArrayCollection이 빈 ArrayCollection으로 변환기에 전달되는 이유는 무엇입니까? 이 함수는 빈 $labels
컬렉션을 반환합니다.
내가 뭘 잘못하고 있는지 잘 모르겠다. 도움을 많이 주심 !! 감사합니다. .