TYPO3 Extbase: расширение tx_cart - PullRequest
0 голосов
/ 06 апреля 2020

Я хотел бы расширить корзину расширений новым полем для добавления в IBAN при оформлении заказа. Поэтому я создал новое расширение и добавил поле базы данных со следующим кодом в ext_tables. sql

#
# Table structure for table 'tx_cart_domain_model_order_item'
#
CREATE TABLE tx_cart_domain_model_order_item (
    iban varchar(255) DEFAULT '' NOT NULL
);

Теперь мне нужно расширить класс Item в

ext/cart/Classes/Domain/Model/Order/item.php

Я пытался чтобы создать файл с моим расширением

ext/cartextend/Classes/Domain/Model/Order/item.php 

и попытался расширить класс с помощью:

namespace Extcode\Cart\Domain\Model\Order;
use Extcode\Cart\Property\Exception\ResetPropertyException;
class Item extends \Extcode\Cart\Domain\Model\Order
{
    /**
     * Iban
     *
     * @var string
     */
    protected $iban;

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

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

Я также добавил поле ввода, которое реализовано правильно.

Но IBAN вообще не сохраняется - я думаю, расширение класса неверно. Я действительно ценю любой намек. Большое спасибо! Урс

1 Ответ

1 голос
/ 07 апреля 2020

Может быть, вам нужно расширить элемент. php вот так (все остальное выглядит хорошо):

namespace Extcode\YourExtension\Domain\Model\Order;

class Item extends \Extcode\Cart\Domain\Model\Order\Item

и не забудьте сообщить ему, что extbase использует iban в front- завершение через опечатку: (у меня есть, чтобы расширить cart_products, вам придется принять его)

config.tx_extbase {
    persistence {
        classes {
            Extcode\CartExtendedProduct\Domain\Model\Product\Product {
                mapping {
                    tableName = tx_cartproducts_domain_model_product_product
                    recordType =
                }
            }
        }
    }
    objects {
      Extcode\CartProducts\Domain\Model\Product\Product.className   = Extcode\CartExtendedProduct\Domain\Model\Product\Product
    }
}
...