在树枝模板上获取textarea的价值

时间:2016-05-06 09:49:34

标签: symfony templates override sylius

我正在与sylius电子商务合作,我对symfony2和sylius非常新,我正在探索很多,但有时候我遇到的问题就像我今天一样,我的问题是下一个,我压倒了秀。 html.twig和我把(自己添加)textarea放在页面的内容上,现在我想问你们,我怎么能从那个textarea获得价值并将它存储到某些var或类似的东西中我希望用这个值做点什么。不可能在树枝内编写标准的PHP代码,如:

因为没有html,head和body标签所以我可以把我的php代码放在里面..

以下是我的show.html.twig

的内容

enter image description here

THX

1 个答案:

答案 0 :(得分:0)

我看到你要覆盖购物车项目表格(或者可能是另一个但是它是相同的解决方案)

要覆盖sylius_cart_item表单并在此表单中添加字段,您必须创建如下表单类型:

<?php

namespace AppBundle\Form\Type;

use Sylius\Bundle\CartBundle\Form\Type\CartItemType as BaseCartItemType;
use Symfony\Component\Form\FormBuilderInterface;

class CartItemType extends BaseCartItemType
{

    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('comment', 'textarea', [
                'label' => 'sylius.form.cart_item.comment',
            ])
        ;
    }
}

覆盖模型

<?php

namespace AppBundle\Model;

use Sylius\Component\Core\Model\CartItem as BaseCartItem;

class OrderItem extends BaseCartItem
{
    /**
     * @var string
     */
    protected $comment;

    /**
     * @return string
     */
    public function getComment()
    {
        return $this->comment;
    }

    /**
     * @param string $comment
     */
    public function setComment($comment)
    {
        $this->comment = $comment;
    }
}

并在config.yml

中添加以下内容
sylius_cart:
    resources:
        cart_item:
            classes:
                form:
                    default: AppBundle\Form\Type\CartItemType

使用以下

创建AppBunde / Resources / config / doctrine / model / OrderItem.orm.xml
<?xml version="1.0" encoding="UTF-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
                                      http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"
                  xmlns:gedmo="http://gediminasm.org/schemas/orm/doctrine-extensions-mapping">

    <mapped-superclass name="AppBundle\Model\OrderItem" table="sylius_order_item">
        <field type="string" name="comment" column="comment" />
    </mapped-superclass>

</doctrine-mapping>

并添加到您的视图中:

{{ form_widget(form.comment) }}

并添加您的AppBundle.php

class AppBundle extends AbstractResourceBundle
{
    /**
     * {@inheritdoc}
     */
    public function getSupportedDrivers()
    {
        return [
            SyliusResourceBundle::DRIVER_DOCTRINE_ORM,
        ];
    }

    /**
     * {@inheritdoc}
     */
    protected function getModelNamespace()
    {
        return 'AppBundle\Model';
    }
}

最后是更新数据库的doctrine命令

app / console doctrine:schema:update --force

我提供的解决方案可能不是最好的,但它可以工作。

你可以用大多数sylius表格来做到这一点。要查看完整配置,您可以查看Sylius / Bundle / CoreBundle / Resources / config / app / sylius.yml 另外,我建议您查看ResourceBundle文档http://docs.sylius.org/en/latest/bundles/SyliusResourceBundle/index.html