数组到字符串转换。 symfony2.7

时间:2015-12-22 14:08:58

标签: php forms symfony twig

我有一个下拉列表,其中包含实体旁边的实体+图标列表。但是当我提交表单时,我收到了这个错误:

  

在渲染模板期间抛出了异常   ("注意:数组到字符串的转换")in   第38行的src \ FLY \ BookingsBundle \ Resources \ views \ Post \ show.html.twig。

     

CRITICAL - 未捕获的PHP异常Twig_Error_Runtime:"异常   在渲染模板期间抛出("注意:数组到   字符串转换")in   " C:\ XAMPP \ htdocs中\的Symfony \ SRC \ FLY \ BookingsBundle /资源/视图/后/ show.html.twig"   在第38行。"在C:\ xampp \ htdocs \ Symfony \ app \ cache \ dev \ classes.php行   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>

1 个答案:

答案 0 :(得分:5)

Post的$ compagny属性是一个数组,正如您在注释中定义的那样:

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

阅读doctrine文档,该数组将在存储到数据库之前被序列化。

你不能直接在树枝上渲染它。

您需要使用for逐个显示数组中的项目。

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