我正在尝试使用Symfony2的JMS支付包创建自定义付款方式。 我把paypal软件包设置得很好 - 但我希望通过银行转帐支付第二个选项。
以下是我的代码 - 但这并未显示新的付款方式。
表格类:
namespace JMS\Payment\BanktransferBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class BanktransferType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('holder', 'text', array('required' => false))
->add('number', 'text', array('required' => false))
->add('expires', 'date', array('required' => false))
->add('code', 'text', array('required' => false))
;
}
public function getName() {
return 'credit_card';
}
}
插件类:
namespace JMS\Payment\BanktransferBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class BanktransferType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('holder', 'text', array('required' => false))
->add('number', 'text', array('required' => false))
->add('expires', 'date', array('required' => false))
->add('code', 'text', array('required' => false))
;
}
public function getName() {
return 'credit_card';
}
}
Services.yml
services:
payment.plugin.banktransfer:
class: JMS\Payment\BanktransferBundle\Plugin\BanktransferPlugin
tags: [{name: payment.plugin}]
credit_card_type:
class: JMS\Payment\BanktransferBundle\Form\BanktransferType
tags:
- { name: form.type, alias: credit_card }
- { name: payment.method_type }
为了让JMS支付包找到我的插件,我需要做些什么?
答案 0 :(得分:0)
确定。我似乎通过使用XML而不是YML来显示它。
的services.xml
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema /dic/services/services-1.0.xsd">
<parameters>
<parameter key="payment.plugin.cash_checkout.class">JMS\Payment\CashBundle\Plugin\CashPlugin</parameter>
<parameter key="payment.form.cash_checkout_type.class">JMS\Payment\CashBundle\Form\CashType</parameter>
</parameters>
<services>
<service id="payment.form.cash_checkout_type" class="%payment.form.cash_checkout_type.class%">
<tag name="payment.method_form_type" />
<tag name="form.type" alias="cash_checkout" />
</service>
</services>
</container>
答案 1 :(得分:0)
你能告诉我们真正的插件类吗?我认为你发布了错误的内容。 我遇到了同样的问题,我遵循了基于JMS documentation的说明。
我的插件类(最小):
<?php
//...
use \JMS\Payment\CoreBundle\Plugin\AbstractPlugin;
class DebitPlugin extends AbstractPlugin {
public function processes($name) {
return 'debit' === $name;
}
}
在您的控制器中,您必须添加名称,具体取决于您的插件(在我的情况下为“借记”)。
<?php
//...
$form = $this->getFormFactory()->create('debit', null, array());
//...
希望有所帮助!