2015-12-22 4 views
2

У меня есть выпадающий список со списком сущностей + значок рядом с сущностью. но когда я представить мою форму я получил эту ошибку:Массив преобразования строки. symfony2.7

An exception has been thrown during the rendering of a template ("Notice: Array to string conversion") in src\FLY\BookingsBundle\Resources\views\Post\show.html.twig at line 38.

CRITICAL - Uncaught PHP Exception Twig_Error_Runtime: "An exception has been thrown during the rendering of a template ("Notice: Array to string conversion") in "C:\xampp\htdocs\Symfony\src\FLY\BookingsBundle/Resources/views/Post/show.html.twig" at line 38." at C:\xampp\htdocs\Symfony\app\cache\dev\classes.php line 4795 .

class Post 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 


    /** 
    * @var array 
    * 
    * @ORM\Column(name="compagny", type="array") 
    */ 
    private $compagny; 


    /** 
    * Get id 
    * 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 


    /** 
    * Set compagny 
    * 
    * @param array $compagny 
    * @return Post 
    */ 
    public function setCompagny($compagny) 
    { 
     $this->compagny = $compagny; 

     return $this; 
    } 

    /** 
    * Get compagny 
    * 
    * @return array 
    */ 
    public function getCompagny() 
    { 
     return $this->compagny; 
    } 
} 

.

->add('compagny', 'choice', [ 
        'required' => true, 
        'multiple' => true, 
        'label' => 'Ex:Emirates airways', 
        'attr' => [ 
         'class' => 'form-control myDropdown', 
         'placeholder' => 'Ex:Emirates airways', 
        ]]) 

.

{% extends '::base.html.twig' %} 

{% block body -%} 
    <h1>Post</h1> 

    <table class="record_properties"> 
     <tbody> 
      <tr> 
       <th>Id</th> 
       <td>{{ entity.id }}</td> 
      </tr> 
      <tr> 
       <th>Departure</th> 
       <td>{{ entity.airport }}</td> 
      </tr> 
      <tr> 
       <th>Arrival</th> 
       <td>{{ entity.airport1 }}</td> 
      </tr> 
      <tr> 
       <th>Departuredate</th> 
       <td>{{ entity.departuredate|date('Y-m-d H:i:s') }}</td> 
      </tr> 
      <tr> 
       <th>Arrivaldate</th> 
       <td>{{ entity.arrivaldate|date('Y-m-d H:i:s') }}</td> 
      </tr> 

      <tr> 
       <th>Compagny</th> 
       <td>{{ entity.compagny }}</td> 
      </tr> 
     </tbody> 
    </table> 

     <ul class="record_actions"> 
    <li> 
     <a href="{{ path('post') }}"> 
      Back to the list 
     </a> 
    </li> 
    <li> 
     <a href="{{ path('post_edit', { 'id': entity.id }) }}"> 
      Edit 
     </a> 
    </li> 
    <li>{{ form(delete_form) }}</li> 
</ul> 
{% endblock %} 

new.html.twig

<div class="col-md-2"> 
    <h4 class="title">Compagny</h4> 
    <div class="form-group form-group-lg form-group-icon-left"> 
     <i class="fa fa-plane input-icon"></i> 
     <label>Airlines</label> 
     {{ form_widget(form.compagny, { 'attr': {'class': 'form-control myDropdown',} }) }} 
     {{ form_errors(form.compagny) }} 
    </div> 
</div> 
+0

Вы получили эту ошибку в своем TWIG-файле, но этого не было в вашем вопросе. Пожалуйста, добавьте его в свой вопрос. – KhorneHoly

+0

@KhorneHoly Я добавляю свой файл в свой вопрос. – Sirius

+0

Я действительно не понимаю, что вы пытаетесь сделать здесь, но ошибка в этой строке '{{entity.compagny}}', * compagny * - это массив, определенный в вашей сущности, поэтому он не может быть просто эхо от ветки. Может быть, * Compagny * не является массивом, и вы хотели использовать другой тип данных для этого столбца в конце концов, как текст? –

ответ

2

Ваш $ Compagny свойство Post является массивом, так же, как вы определили в аннотации:

/** 
* @var array 
* 
* @ORM\Column(name="compagny", type="array") 
*/ 

доктрина документации читать этот массив будет сериализована до хранения в базе данных.

И вы не можете сделать это прямо в веточке.

Вам необходимо использовать for для отображения элементов в массиве по одному.

<ul> 
{% for item in entity.compagny %} 
    <li>{{ item }}</li> 
{% endfor %} 
</ul> 
+0

Я попытался с вашим примером, но все еще пуст после отправки данных. – Sirius

+0

@Sirius вы могли бы сбрасывать ($ form-> getData()) 'внутри вашего' if ($ form-> isValid()) ', чтобы узнать, какие данные вы на самом деле получаете? – Phoenix

+0

это то, что я получил, вы можете проверить ссылку на снимок экрана: [link] (http://www.noelshack.com/2015-52-1450800517-tes.png) – Sirius