Расширение корзина от opus-ecom

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
cyberbrain
Сообщения: 10
Зарегистрирован: 2014.05.12, 14:45

Расширение корзина от opus-ecom

Сообщение cyberbrain »

Второй день бьюсь с этой корзиной (https://github.com/opus-online/yii2-ecom), точнее с реализацией интерфейса.

модель реализует интерфейс:

Код: Выделить всё

use yii\db\ActiveRecord;
use opus\ecom\models\BasketProductInterface;

class Product extends ActiveRecord implements BasketProductInterface {
}
 
контроллер и экшн корзины:

Код: Выделить всё

    protected $basket;

    public function init()
    {
        parent::init();
        $this->basket = \Yii::$app->ecom->basket;
    }

    public function actionAdd()
    {
        $product =Product::find($_GET['id']);
        $this->basket->add($product);
        $this->redirect(array('order/create'));
    }
выходящая ошибка:

Код: Выделить всё

Argument 1 passed to opus\ecom\Basket::add() must implement interface opus\ecom\models\BasketItemInterface, instance of yii\db\ActiveQuery given, called in /controllers/BasketController.php on line 87 and defined
поскажите куда копать, не пойму где ошибка. заранее благодарен.
ATI
Сообщения: 69
Зарегистрирован: 2009.09.27, 12:35

Re: Расширение корзина от opus-ecom

Сообщение ATI »

Вы не реализовали методы интерфейса.
cyberbrain
Сообщения: 10
Зарегистрирован: 2014.05.12, 14:45

Re: Расширение корзина от opus-ecom

Сообщение cyberbrain »

методы реализовал, просто не указал здесь. вот все методы интрерфейса.

Код: Выделить всё

class Product extends ActiveRecord implements BasketProductInterface{
    public $basketQuantity = 1;

    public function getLabel()
    {
        return $this->name;
    }

    /**
     * Only used to display a number if product list. Not required by ecom component
     * @return int
     */
    public function getPrice()
    {
        return $this->price;
    }

    /**
     * Returns the absolute VAT. Used in shopping basket view and accessed via 'vatSum' column
     * @return float
     */
    public function getVatSum()
    {
        return $this->vat * $this->getPrice();
    }

    /**
     * @inheritdoc
     */
    public function getTotalPrice()
    {
        return $this->getPrice() * $this->basketQuantity;
    }

    /**
     * Returns the VAT for a quantity of products. Used in checkout view
     * @return float
     */
    public function getTotalVat()
    {
        return $this->getVatSum() * $this->basketQuantity;
    }

    /**
     * @inheritdoc
     */
    public function serialize()
    {
        return serialize($this->attributes);
    }

    /**
     * @inheritdoc
     */
    public function unserialize($serialized)
    {
        $this->setAttributes(unserialize($serialized), false);
    }

}
 
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Расширение корзина от opus-ecom

Сообщение slavcodev »

must implement interface opus\ecom\models\BasketItemInterface
class Product extends ActiveRecord implements BasketProductInterface
Жду Yii 3!
cyberbrain
Сообщения: 10
Зарегистрирован: 2014.05.12, 14:45

Re: Расширение корзина от opus-ecom

Сообщение cyberbrain »

Вот выдержка из мануала:
Implement opus\ecom\models\BasketProductInterface in your AR model class to add support for products and services
BasketProductInterface.php и BasketItemInterface.php лежат в одной папке

BasketProductInterface.php

Код: Выделить всё

interface BasketProductInterface extends BasketItemInterface
{
    /**
     * Returns the price of the element. This should include multiplication with any quantity attributes
     *
     * @return mixed
     */
    public function getTotalPrice();
}
 
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Расширение корзина от opus-ecom

Сообщение slavcodev »

Я не в курсе, не использовал это расширение. Я лишь обратил твое внимание что ошибка указывает на один интерфейс, а твоя модель имеет другой.
Жду Yii 3!
cyberbrain
Сообщения: 10
Зарегистрирован: 2014.05.12, 14:45

Re: Расширение корзина от opus-ecom

Сообщение cyberbrain »

в любом случае спасибо за внимание. Вот застрял так застрял с этой корзиной, может кто-нибудь посоветует провереное решение. Нужна только корзина по сути, без платежей и дисконтов.
lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: Расширение корзина от opus-ecom

Сообщение lancedevnull »

find вернет Query, а вам надо findOne или find()->one()
cyberbrain
Сообщения: 10
Зарегистрирован: 2014.05.12, 14:45

Re: Расширение корзина от opus-ecom

Сообщение cyberbrain »

Спасибо, все заработало! Эх были у меня подозрения на find()!
Закрыто