我得到這個錯誤:如何在Symfony 2中使用帶__toString()的表單?
Entities passed to the choice field must have a "__toString()" method defined (or you can also override the "property" option).
這不是困惑我,因爲我嘗試當我得到這個錯誤,要麼是廉政局或BIGINT的呈現的字段。什麼讓我感到困惑的是我應該在哪裏使用__toString()來關聯這個字段?
此外,什麼是這個「屬性」選項錯誤消息說我可以重寫?
乾杯
編輯:
這裏的呈現形式的代碼:
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('id');
$builder->add('title');
$builder->add('slug');
$builder->add('content');
$builder->add('keywords');
$builder->add('contenttype');
$builder->add('hits');
$builder->add('mainpage');
$builder->add('hasmainpage');
$builder->add('ismainpage');
}
下面是我的控制器類來處理這個代碼:
$pageadd = new Content();
$form = $this->createForm(new PageAdd(), $pageadd);
$request = $this->getRequest();
if ($request->getMethod() == 'GET') {
$form->bindRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()
->getEntityManager();
$em->persist($pageadd);
$em->flush();
return $this->redirect($this->generateUrl('ShoutAdminBundle_add'));
}
}
return $this->render('ShoutAdminBundle:Default:pageadd.html.twig', array(
'form' => $form->createView()
));
這裏是我Twi中的代碼g文件:
<form action="{{ path('ShoutAdminBundle_adminpageadd') }}" method="post" {{ form_enctype(form) }} class="blogger">
{{ form_errors(form) }}
<p class="row">
{{ form_label(form.id, 'ID*', { 'attr': {'class': 'title'} }) }}
{{ form_errors(form.id) }}
{{ form_widget(form.id, { 'attr': {'class': 'textfield'}}) }}
</p>
<p class="row">
{{ form_label(form.title, 'Title*', { 'attr': {'class': 'title'} }) }}
{{ form_errors(form.title) }}
{{ form_widget(form.title, { 'attr': {'class': 'textfield'}}) }}
</p>
<p class="row">
{{ form_label(form.slug, 'Slug*', { 'attr': {'class': 'title'} }) }}
{{ form_errors(form.slug) }}
{{ form_widget(form.slug, { 'attr': {'class': 'textfield'}}) }}
</p>
<p class="row">
{{ form_label(form.content, 'Content*', { 'attr': {'class': 'title'} }) }}
{{ form_errors(form.content) }}
{{ form_widget(form.content, { 'attr': {'class': 'textfield'}}) }}
</p>
<p class="row">
{{ form_label(form.keywords, 'Keywords*', { 'attr': {'class': 'title'} }) }}
{{ form_errors(form.keywords) }}
{{ form_widget(form.keywords, { 'attr': {'class': 'textfield'}}) }}
</p>
<p class="row">
{{ form_label(form.contenttype, 'Content Type*', { 'attr': {'class': 'title'} }) }}
{{ form_errors(form.contenttype) }}
{{ form_widget(form.contenttype, { 'attr': {'class': 'textfield'}}) }}
</p>
<p class="row">
{{ form_label(form.hits, 'Hits*', { 'attr': {'class': 'title'} }) }}
{{ form_errors(form.hits) }}
{{ form_widget(form.hits, { 'attr': {'class': 'textfield'}}) }}
</p>
<p class="row">
{{ form_label(form.mainpage, 'Main Page*', { 'attr': {'class': 'title'} }) }}
{{ form_errors(form.mainpage) }}
{{ form_widget(form.mainpage, { 'attr': {'class': 'textfield'}}) }}
</p>
<p class="row">
{{ form_label(form.hasmainpage, 'Has Main Page*', { 'attr': {'class': 'title'} }) }}
{{ form_errors(form.hasmainpage) }}
{{ form_widget(form.hasmainpage, { 'attr': {'class': 'textfield'}}) }}
</p>
<p class="row">
{{ form_label(form.ismainpage, 'Is Main Page*', { 'attr': {'class': 'title'} }) }}
{{ form_errors(form.ismainpage) }}
{{ form_widget(form.ismainpage, { 'attr': {'class': 'textfield'}}) }}
</p>
{{ form_rest(form) }}
<p class="row">
<input type="submit" value="Save This Page" class="savebutton" />
</p>
</form>
你可以使用array('class'=>'ShoutAdminBundle :: Admin') – rooney
@mickburkejnr來簡化謝謝對於這樣一個簡單的答案,經過7個小時的搜索之後,我發現了這個答案並提供了幫助。現在我得到一個多選擇的列表,但我想要一個下拉菜單。請幫助 – ScoRpion
您在buildForm部分內建立下拉字段。我沒有代碼,但是如果你看看Symfony文檔上的Forms頁面,它會在那裏得到答案。 – mickburkejnr