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