Giter VIP home page Giter VIP logo

yii2-demo-shop's People

Contributors

elisdn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

yii2-demo-shop's Issues

RBAC error

При внисении изменений в UserManageService вылетает ошибка Can not instantiate yii\rbac\ManagerInterface.
Роль пользователю прописана.
Не могу отловить из-за чего ошибка

не хватает $form->phone

после первональной установки репозитория
проходишь регистрацию и требуется ввести номер телефона
нужно в SignupService добавить
$user = User::requestSignup(
$form->username,
$form->email,
$form->phone, // не хватает
$form->password
);

не подгружаются миграции

Вроде фремфорк обновлен но не подгружаются миграции.
Yii Migration Tool (based on Yii v2.0.35)

Creating migration history table "migration"...Done.
PHP Warning 'yii\base\ErrorException' with message 'strncmp() expects parameter 1 to be string, array given'

in /var/www/html/yii2-demo-shop/vendor/yiisoft/yii2/BaseYii.php:133

Stack trace:
#0 [internal function]: yii\base\ErrorHandler->handleError()
#1 /var/www/html/yii2-demo-shop/vendor/yiisoft/yii2/BaseYii.php(133): strncmp()
#2 /var/www/html/yii2-demo-shop/vendor/fishvision/yii2-migrate/controllers/MigrateController.php(111): yii\BaseYii::getAlias()
#3 /var/www/html/yii2-demo-shop/vendor/fishvision/yii2-migrate/controllers/MigrateController.php(79): fishvision\migrate\contro llers\MigrateController->getMigrationPaths()
#4 /var/www/html/yii2-demo-shop/vendor/yiisoft/yii2/console/controllers/BaseMigrateController.php(167): fishvision\migrate\cont rollers\MigrateController->getNewMigrations()
#5 [internal function]: yii\console\controllers\BaseMigrateController->actionUp()
#6 /var/www/html/yii2-demo-shop/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array()
#7 /var/www/html/yii2-demo-shop/vendor/yiisoft/yii2/base/Controller.php(157): yii\base\InlineAction->runWithParams()
#8 /var/www/html/yii2-demo-shop/vendor/yiisoft/yii2/console/Controller.php(164): yii\base\Controller->runAction()
#9 /var/www/html/yii2-demo-shop/vendor/yiisoft/yii2/base/Module.php(528): yii\console\Controller->runAction()
#10 /var/www/html/yii2-demo-shop/vendor/yiisoft/yii2/console/Application.php(180): yii\base\Module->runAction()
#11 /var/www/html/yii2-demo-shop/vendor/yiisoft/yii2/console/Application.php(147): yii\console\Application->runAction()
#12 /var/www/html/yii2-demo-shop/vendor/yiisoft/yii2/base/Application.php(386): yii\console\Application->handleRequest()
#13 /var/www/html/yii2-demo-shop/yii(27): yii\base\Application->run()

Type Exception

array_reduce(array_map(function (Category $category) {

Getting: Exception 'TypeError' with message 'Argument 1 passed to console\controllers\SearchController::console\controllers{closure}() must be an instance of shop\entities\Shop\Category, instance of shop\entities\Shop\Product\CategoryAssignment given' for some reason... The code is exactly like in repo and in the Video, but...

Не работает `vagrant up`

$ vagrant up
Bringing machine 'shop' up with 'virtualbox' provider...
==> shop: Box 'bento/ubuntu-16.04' could not be found. Attempting to find and install...
    shop: Box Provider: virtualbox
    shop: Box Version: >= 0
==> shop: Loading metadata for box 'bento/ubuntu-16.04'
    shop: URL: https://vagrantcloud.com/bento/ubuntu-16.04
==> shop: Adding box 'bento/ubuntu-16.04' (v201710.25.0) for provider: virtualbox
    shop: Downloading: https://vagrantcloud.com/bento/boxes/ubuntu-16.04/versions/201710.25.0/providers/virtualbox.box
    shop:
==> shop: Successfully added box 'bento/ubuntu-16.04' (v201710.25.0) for 'virtualbox'!
There are errors in the configuration of this machine. Please fix
the following errors and try again:

vm:
* The 'hostmanager' provisioner could not be found.

Vagrant:
* Unknown configuration section 'hostmanager'.

ArgumentCount Error

После установки выдает

Too few arguments to function shop\entities\User\User::requestSignup(), 3 passed in /app/shop/useCases/auth/SignupService.php on line 35 and exactly 4 expected

Должен быть slug

в блоге с id напутали,
мне кажется нужен slug для тегов

class TagReadRepository
{
    public function find($id): ?Tag
    {
        return Tag::findOne($id);
    }
}

Getting unknown property BrandForm::name

Дошел до создания брендов, но вылетает ошибка Getting unknown property: shop\forms\manage\Shop\BrandForm::name
Похоже ругается на CompositeForm return parent::__get($name)

Notice: Undefined variable: params

При создании 2-х UrlManager и конфигурации их как здесь
https://github.com/ElisDN/yii2-demo-shop/blob/master/backend/config/urlManager.php

return [
    'class' => 'yii\web\UrlManager',
    'hostInfo' => $params['backendHostInfo'],
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        '' => 'site/index',
        '<_a:login|logout>' => 'auth/<_a>',
        '<_c:[\w\-]+>' => '<_c>/index',
        '<_c:[\w\-]+>/<id:\d+>' => '<_c>/view',
        '<_c:[\w\-]+>/<_a:[\w-]+>' => '<_c>/<_a>',
        '<_c:[\w\-]+>/<id:\d+>/<_a:[\w\-]+>' => '<_c>/<_a>',
    ],
];

у меня на php 7.1.5 выдаёт ошибку

Notice: Undefined variable: params in ...\shop\frontend\config\urlManager.php on line 15

добавил такую проверку во всех urlManager

'hostInfo' => isset($params['backendHostInfo']) ? $params['backendHostInfo'] : null,

теперь не ругается.

backend -> Blog -> comments -> filter on active field

Filter not work.
/backend/forms/Blog/CommentSearch.php

Not correct:
$query->andFilterWhere([ 'id' => $this->id, 'post_id' => $this->post_id, ]);

Need:
$query->andFilterWhere([ 'id' => $this->id, 'active' => $this->active, ]);

Rest api urls & Swagger issues

Не работают put, delete методы.

consumes должен быть "application/x-www-form-urlencoded":

* consumes={"application/json","application/xml"},

type нужен string. мы hash принимает, а не integer

* @SWG\Parameter(name="id", in="path", required=true, type="integer"),

* @SWG\Parameter(name="id", in="path", required=true, type="integer"),

Ну и соответственно здесь тоже:

'PUT shop/cart/<id:\d+>/quantity' => 'shop/cart/quantity',
'DELETE shop/cart/<id:\d+>' => 'shop/cart/delete',


P.S. лень делать pull 😃

Исключение в корзине

Если положить товар в корзину будучи авторизованным,
то при выключении/удалении этого товара из админки
вылетает исключение при загрузке корзины из DBStorage.
Т.к. мы создаем массив объектов из активных товаров и один из элементов в массиве получает значение false, из чего и лезут ошибки.

Решил проблему моментальным удалением товара из корзины если не получилось создать объект Product.

DbStorage.php -> load()
$products = array_map(function (array $row) {
    /** @var Product $product */
    if ($product = Product::find()->active()->andWhere(['id' => $row['product_id']])->one()) {
        return new CartItem($product, $row['modification_id'], $row['quantity']);
    }
    // Иначе удаляем не найденный/выключенный товар из корзины
    $this->db->createCommand()->delete('{{%shop_cart_items}}', [
        'user_id' => $row['user_id'],
        'product_id' => $row['product_id'],
        'modification_id' => $row['modification_id']
    ])->execute();
    return false;
}, $rows);

return array_filter($products);

Не работает регистрация пользователя

Database Exception – yii\db\Exception

SQLSTATE[HY000]: General error: 1364 Field 'phone' doesn't have a default value
The SQL being executed was: INSERT INTO `users` (`username`, `email`, `password_hash`, `created_at`, `status`, `email_confirm_token`, `auth_key`, `updated_at`) VALUES ('admin', '[email protected]', '$2y$13$BIQRewDcb46WbkW88XpSbeH0PB/ETlYFypWbWfy2/LQS1MppkB4I.', 1498988396, 0, 'mCtz3qYvCOCZPWq_4DxnUGsq9rB-SE7y', 'H1cIGJM7pqo7jbASWzKy3fQVxO8E5bGq', 1498988396)
Error Info: Array
(
    [0] => HY000
    [1] => 1364
    [2] => Field 'phone' doesn't have a default value
)

API корзины

Дмитрий, на уроке добавления гибридного стораджа вы сказали, что это уберет проблему с проверкой корзины в куках.
Но в момент проверки есть ли в куках корзина, чтобы в последствии перекинуть ее в БД, она все равно лезет в куки .
HybridStorage.php - проверка: if ($cookieItems = $cookieStorage->load()) {}

Как лучше поступить в данной ситуации?
Временно решил доп. проверкой
if (Yii::$app->request->cookieValidationKey && $cookieItems = $cookieStorage->load()) {}

{
    "name": "Invalid Configuration",
    "message": "yii\\web\\Request::cookieValidationKey must be configured with a secret key.",
    "code": 0,
    "type": "yii\\base\\InvalidConfigException",
    "file": "/var/www/yii.toxic.pro/vendor/yiisoft/yii2/web/Request.php",
    "line": 1537,
    "stack-trace": [
        "#0 /var/www/yii.toxic.pro/vendor/yiisoft/yii2/web/Request.php(1519): yii\\web\\Request->loadCookies()",
        "#1 /var/www/yii.toxic.pro/vendor/yiisoft/yii2/base/Component.php(139): yii\\web\\Request->getCookies()",
        "#2 /var/www/yii.toxic.pro/shop/cart/storage/CookieStorage.php(24): yii\\base\\Component->__get('cookies')",
        "#3 /var/www/yii.toxic.pro/shop/cart/storage/HybridStorage.php(43): shop\\cart\\storage\\CookieStorage->load()",
        "#4 /var/www/yii.toxic.pro/shop/cart/storage/HybridStorage.php(32): shop\\cart\\storage\\HybridStorage->getStorage()",
        "#5 /var/www/yii.toxic.pro/shop/cart/Cart.php(108): shop\\cart\\storage\\HybridStorage->save(Array)",
        "#6 /var/www/yii.toxic.pro/shop/cart/Cart.php(82): shop\\cart\\Cart->saveItems()",
        "#7 /var/www/yii.toxic.pro/shop/services/Shop/CartService.php(44): shop\\cart\\Cart->clear()",
        "#8 /var/www/yii.toxic.pro/api/controllers/shop/CartController.php(132): shop\\services\\Shop\\CartService->clear()",
        "#9 [internal function]: api\\controllers\\shop\\CartController->actionClear()",
        "#10 /var/www/yii.toxic.pro/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)",
        "#11 /var/www/yii.toxic.pro/vendor/yiisoft/yii2/base/Controller.php(157): yii\\base\\InlineAction->runWithParams(Array)",
        "#12 /var/www/yii.toxic.pro/vendor/yiisoft/yii2/base/Module.php(528): yii\\base\\Controller->runAction('clear', Array)",
        "#13 /var/www/yii.toxic.pro/vendor/yiisoft/yii2/web/Application.php(103): yii\\base\\Module->runAction('shop/cart/clear', Array)",
        "#14 /var/www/yii.toxic.pro/vendor/yiisoft/yii2/base/Application.php(386): yii\\web\\Application->handleRequest(Object(yii\\web\\Request))",
        "#15 /var/www/yii.toxic.pro/api/web/index.php(17): yii\\base\\Application->run()",
        "#16 {main}"
    ]
}

И еще вопрос.
Как в API добавлять товары с модификациями в корзину?
Пишет: Необходимо заполнить «Modification»

Товары с модификаторами - повторное добавление

При повторном добавлении товара в корзину с тем же модификатором добавляется новая запись, вместо увеличения количества

Почему-то в /shop/cart/CartItem.php ID модификатора приходит строкой...
Вылечил:

public function getId(): string
	{
		return md5(serialize([(int)$this->product->id, (int)$this->modificationId]));
	}

[page & shop category] Исключение при попытке выбрать родительским элементом самого себя

До конца курса еще не дошел, но уже столкнулся с этой проблемой в 2х разделах, где реализован вложенный список через nested-set-behavior

Страницы:
/page/update?id=1
/shop/category/update?id=1

Файлы:
/backend/views/page/_form.php
/backend/views/shop/category/_form.php

Речь идет о селекте parentId

Решил исправить проблему повесив на option атрибут disabled.
В методе dropDownList() есть опция, позволяющая это сделать нативно.

<?= $form->field($model, 'parentId')->dropDownList( $model->parentsList(), ['options' => [Yii::$app->request->get('id') => ['disabled' => true]]] ) ?>

Дмитрий, если есть более изящное решение - подскажите. Пока только изучаю фреймворк.

I18N

Где будет правильнее перевести поля бд в текущей архитектуре приложения? Сейчас Yii::t() не используется в коде. Если определить метод attributeLabels() в сущностях (entities), то их не видно, например, в формах (т.к. они не наследуются от сущностей). Делать в формах что-то вроде:

public function attributeLabels()
{
    return $this->_category->attributeLabels();
}

тоже не очень как-то, да и не во всех формах есть доступ к сущности текущей. Дублировать тоже не хочется. Еще есть CompositeForm, MetaForm... Как?

Не работают коссольные команды

vagrant@gradmash:/app$ ./yii
Exception 'Exception' with message 'Invalid MailChimp API key `` supplied.'

in /app/vendor/drewm/mailchimp-api/src/MailChimp.php:43

Stack trace:
#0 /app/common/bootstrap/SetUp.php(95): DrewM\MailChimp\MailChimp->__construct('')
#1 [internal function]: common\bootstrap\SetUp->common\bootstrap\{closure}(Object(yii\di\Container), Array, Array)
#2 /app/vendor/yiisoft/yii2/di/Container.php(163): call_user_func(Object(Closure), Object(yii\di\Container), Array, Array)
#3 /app/vendor/yiisoft/yii2/di/Container.php(456): yii\di\Container->get('shop\\services\\n...')
#4 /app/vendor/yiisoft/yii2/di/Container.php(370): yii\di\Container->resolveDependencies(Array, Object(ReflectionClass))
#5 /app/vendor/yiisoft/yii2/di/Container.php(156): yii\di\Container->build('shop\\useCases\\m...', Array, Array)
#6 /app/vendor/yiisoft/yii2/di/Container.php(456): yii\di\Container->get('shop\\useCases\\m...')
#7 /app/vendor/yiisoft/yii2/di/Container.php(370): yii\di\Container->resolveDependencies(Array, Object(ReflectionClass))
#8 /app/vendor/yiisoft/yii2/di/Container.php(156): yii\di\Container->build('console\\control...', Array, Array)
#9 /app/vendor/yiisoft/yii2/BaseYii.php(340): yii\di\Container->get('console\\control...', Array)
#10 /app/vendor/yiisoft/yii2/base/Module.php(638): yii\BaseYii::createObject('console\\control...', Array)
#11 /app/vendor/yiisoft/yii2/base/Module.php(591): yii\base\Module->createControllerByID('role')
#12 /app/vendor/yiisoft/yii2/console/controllers/HelpController.php(196): yii\base\Module->createController('')
#13 /app/vendor/yiisoft/yii2/console/controllers/HelpController.php(288): yii\console\controllers\HelpController->getCommandDescriptions()
#14 /app/vendor/yiisoft/yii2/console/controllers/HelpController.php(67): yii\console\controllers\HelpController->getDefaultHelp()
#15 [internal function]: yii\console\controllers\HelpController->actionIndex(NULL)
#16 /app/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#17 /app/vendor/yiisoft/yii2/base/Controller.php(156): yii\base\InlineAction->runWithParams(Array)
#18 /app/vendor/yiisoft/yii2/console/Controller.php(128): yii\base\Controller->runAction('', Array)
#19 /app/vendor/yiisoft/yii2/base/Module.php(523): yii\console\Controller->runAction('', Array)
#20 /app/vendor/yiisoft/yii2/console/Application.php(180): yii\base\Module->runAction('', Array)
#21 /app/vendor/yiisoft/yii2/console/Application.php(147): yii\console\Application->runAction('', Array)
#22 /app/vendor/yiisoft/yii2/base/Application.php(380): yii\console\Application->handleRequest(Object(yii\console\Request))
#23 /app/yii(27): yii\base\Application->run()
#24 {main}

Vagrant up

при команде vagrant up появляется ошибка
" There are errors in the configuration of this machine. Please fix
the following errors and try again:
vm:

  • The 'hostmanager' provisioner could not be found.

Vagrant:

  • Unknown configuration section 'hostmanager'.
    Установил плагин Vagrant Host Manager (через команду "vagrant plugin install vagrant-hostmanager"),проблема не решилься
    В чем может быть проблема?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.