Как исправить Serialization of 'Closure' is not allowed ?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
Sergalas
Сообщения: 626
Зарегистрирован: 2015.10.15, 12:39

Как исправить Serialization of 'Closure' is not allowed ?

Сообщение Sergalas »

собственно лучше всего выложу лог

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

 in /var/www/cremea.lc/vendor/omnilight/yii2-shopping-cart/ShoppingCart.php
    public function getSerialized()
    {
        return serialize($this->_positions);//ошибка здесь
    }

 in /var/www/cremea.lc/vendor/omnilight/yii2-shopping-cart/ShoppingCart.php at line 120 – serialize(['a:2:{s:2:"id";i:96;s:6:"volume";s:8:"300 гр";}' => frontend\models\CartPosition]) 
    public function getSerialized()
    {
        return serialize($this->_positions);//ошибка здесь
    }

 in /var/www/cremea.lc/vendor/omnilight/yii2-shopping-cart/ShoppingCart.php at line 79 – yz\shoppingcart\ShoppingCart::getSerialized() 
    public function saveToSession()
    {
        $this->session = Instance::ensure($this->session, Session::className());
        $this->session[$this->cartId] = $this->getSerialized();// ошибка здесь
    }

 in /var/www/cremea.lc/frontend/widgets/cart/Cart.php at line 38 – yz\shoppingcart\ShoppingCart::put(frontend\models\CartPosition, 1) 
            $prise= Price::find()->where("price=".$post['Carts']['price'])->andWhere("product_id=".$post['productId'])->one();
            $prises=$prise->price;
            $volume=$prise->volume;
            $country=$prise->countryid;
            $cartPosition = new CartPosition($position->id, $prises, $country, $volume);
            if ($position) {
                \Yii::$app->cart->put($cartPosition, 1);//ошибка здесь
                
где я допустил ошибку не подскажите и в чем она ?
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Как исправить Serialization of 'Closure' is not allowed ?

Сообщение rak »

а ошибку загуглить, не? :)
вот это поможет
https://github.com/jeremeamia/super_closure
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Как исправить Serialization of 'Closure' is not allowed ?

Сообщение ElisDN »

Sergalas писал(а): 2017.03.14, 14:46 не подскажите и в чем она ?
В том, что анонимные функции не сериализуются.
Аватара пользователя
Sergalas
Сообщения: 626
Зарегистрирован: 2015.10.15, 12:39

Re: Как исправить Serialization of 'Closure' is not allowed ?

Сообщение Sergalas »

ElisDN писал(а): 2017.03.14, 15:10
Sergalas писал(а): 2017.03.14, 14:46 не подскажите и в чем она ?
В том, что анонимные функции не сериализуются.
это я понял я не понял где у меня эта анонимная функция
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Как исправить Serialization of 'Closure' is not allowed ?

Сообщение ElisDN »

Sergalas писал(а): 2017.03.14, 15:12 это я понял я не понял где у меня эта анонимная функция
Сделайте print_r($this->_positions) и посмотрите, в чём там будет Closure. Может в каком-нибудь поведении на событие навешено.
Аватара пользователя
Sergalas
Сообщения: 626
Зарегистрирован: 2015.10.15, 12:39

Re: Как исправить Serialization of 'Closure' is not allowed ?

Сообщение Sergalas »

ElisDN писал(а): 2017.03.14, 15:16
Sergalas писал(а): 2017.03.14, 15:12 это я понял я не понял где у меня эта анонимная функция
Сделайте print_r($this->_positions) и посмотрите, в чём там будет Closure. Может в каком-нибудь поведении на событие навешено.
Спасибо вы мне очень помогли :)
empower
Сообщения: 4
Зарегистрирован: 2015.02.06, 18:37

Re: Как исправить Serialization of 'Closure' is not allowed ?

Сообщение empower »

В корзине лишние данные не нужны, по этому поведения можно смело удалять $model->detachBehaviors();
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как исправить Serialization of 'Closure' is not allowed ?

Сообщение zelenin »

empower писал(а): 2018.05.14, 10:51 В корзине лишние данные не нужны, по этому поведения можно смело удалять $model->detachBehaviors();
телепат
Аватара пользователя
Йож
Сообщения: 574
Зарегистрирован: 2015.08.26, 03:05

Re: Как исправить Serialization of 'Closure' is not allowed ?

Сообщение Йож »

Возможно, empower представитель omnilight :)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как исправить Serialization of 'Closure' is not allowed ?

Сообщение zelenin »

Йож писал(а): 2018.05.14, 13:43 Возможно, empower представитель omnilight :)
но его коммент относится не к функционалу компонента, а к функционалу модели пользователя.
Ответить