0

我正在尝试使用 Symfony2 的 JMS 付款包创建自定义付款方式。我已经很好地设置了贝宝捆绑包 - 但是我想要通过银行转账支付的第二个选项。

下面是我拥有的代码 - 但这没有显示新的付款选项。

表格类:

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';
}

}

服务.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 支付包找到我的插件?

4

2 回答 2

0

好的。我似乎已经通过使用 XML 而不是 YML 来显示它。

服务.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>
于 2013-10-04T13:12:13.607 回答
0

你能告诉我们真正的插件类吗?我认为您发布了错误的内容。我遇到了同样的问题,我按照基于 JMS文档的说明进行操作。

我的插件类(最小):

    <?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());
   //...

希望有帮助!

于 2013-11-19T11:51:05.537 回答