2016-09-13 9 views
1

FormBuilderInterface의 입력 텍스트 필드 대신 드롭 다운 (카테고리, 하위 카테고리)을 만들 때 문제가 발생했습니다. 다시 텍스트 입력으로 변경하면 모든 작업이 양호합니다."string"유형의 예상 인수

여기 FormType

내가 문제를 이해
namespace Expatservice\ManagerBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\Form\Extension\Core\Type\ChoiceType; 
use Symfony\Component\Form\Extension\Core\Type\FileType; 
use Symfony\Bridge\Doctrine\Form\Type\EntityType; 
use Symfony\Component\OptionsResolver\OptionsResolverInterface; 
use Doctrine\ORM\EntityRepository; 

class ServiceType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('title') 
      ->add('category', EntityType::class, array(
       'class' => 'ExpatserviceCategoryBundle:Category', 
       'query_builder' => function (EntityRepository $er) { 
        return $er->createQueryBuilder('c') 
        ->where('c.parent = 0') 
        ->orderBy('c.title', 'ASC'); 
       }, 
       'choice_value' => 'title', 
       'choice_label' => 'title' 
      )) 
      ->add('subcategory', EntityType::class, array(
       'class' => 'ExpatserviceCategoryBundle:Category', 
       'query_builder' => function (EntityRepository $er) { 
        return $er->createQueryBuilder('c') 
        ->where('c.parent = 2') 
        ->orderBy('c.title', 'ASC'); 
       }, 
       'choice_value' => 'title', 
       'choice_label' => 'title' 
      )) 
      ->add('description') 
      ->add('image', FileType::class, array('data_class' => null, 'required'=>false)); 
    } 

    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $resolver->setDefaultOptions(array('data_class' => 'Expatservice\ManagerBundle\Entity\Service')); 
    } 

    public function getName() 
    { 
     return 'expantservice_managerbundle_service'; 
    } 
} 

내 코드이지만, 그것을 해결하기 위해 인터넷에서 아무것도 발견하지 않는 방법을 알아낼 수 없습니다.

+0

귀하의 질문이 명확하지 않다. 오류가 발생한 행을 알려주고 그 행을 지적 할 수 있습니까? 감사! –

+0

정확하게 이해하고 있는지 모르겠지만 해당 엔터티가 '__toString()'함수로 구현되어 있습니까? – pusle

+0

Alvin, 정확한 문자열 : "예상되는 인수 유형"string ","Expatservice \ CategoryBundle \ Entity \ Category "가" 인 경우 UnexpectedTypeException : if (! is_scalar ($ value) &&! (is_object ($ value) && method_exists ($ value, '__toString'))) { throw 새 UnexpectedTypeException ($ value, 'string'); } $ stringValue = (string) $ value; –

답변

0

내 양식을 처리 할 때 올바른 데이터 형식을 얻으려면 __toString() 마법 함수를 사용해야합니다.

것은 우리가 문자열을 얻을 것이다 있는지 확인하려면 엔티티 부분은 다음과 같아야합니다

/** 
* Get title 
* 
* @return string 
*/ 
public function getTitle() 
{ 
    return $this->title; 
} 

public function __toString() { 
    return $this->title; 
} 
관련 문제