Mirocow / yii2-yandex-maps

yii2-yandex-maps
23 stars 30 forks source link

show error when using your example #5

Open bemulima opened 5 years ago

bemulima commented 5 years ago

when i try using your example code showing this error: ` PHP Warning – yii\base\ErrorException count(): Parameter must be an array or an object that implements Countable

1. in C:\OSPanel\domains\ad.loc\vendor\mirocow\yii2-yandex-maps\mirocow\yandexmaps\Api.php at line 64
55565758596061626364656667686970717273

                        /**
     * Render client scripts.
     */
    public function render() {
        $this->registerScriptFile();
        $this->registerScript();
    }

    protected function encodeArray($array) {
        return count($array) > 0 ? Json::encode($array) : '{}';
    }

    /**
     * @todo Add another API params
     * @see http://api.yandex.ru/maps/doc/jsapi/2.x/dg/concepts/load.xml
     */
    protected function registerScriptFile() {
        if ('https' !== $this->protocol) {
            $this->protocol = 'http';

2. in C:\OSPanel\domains\ad.loc\vendor\mirocow\yii2-yandex-maps\mirocow\yandexmaps\Api.php at line 183 – mirocow\yandexmaps\Api::encodeArray()
177178179180181182183184185186187188189

                                    $js .= "$controls;\n";
            }

            if (count($map->behaviors) > 0) {
                $behaviors = "\n\$Maps['$id'].behaviors";
                foreach ($map->behaviors as $config => $behavior) {
                    $config = $this->encodeArray($config);
                    $behaviors .= "\n\t.$behavior($config)";
                }
                $js .= "$behaviors;\n";
            }

            if (count($map->objects) > 0) {

3. in C:\OSPanel\domains\ad.loc\vendor\mirocow\yii2-yandex-maps\mirocow\yandexmaps\Api.php at line 104 – mirocow\yandexmaps\Api::generateMap()
9899100101102103104105106107108109110

                        }

    public function generateObject($object, &$var = null) {
        $class = get_class($object);
        $generator = 'generate' . substr($class, strrpos($class, '\\') + 1);
        if (method_exists($this, $generator)) {
            $js = $this->$generator($object, $var);

            if ($object instanceof Interfaces\EventAggregate && count($object->getEvents()) > 0) {
                if (null !== $var) {
                    $events = "\n$var.events";
                    foreach ($object->getEvents() as $event => $handle) {
                        $event = Json::encode($event);

4. in C:\OSPanel\domains\ad.loc\vendor\mirocow\yii2-yandex-maps\mirocow\yandexmaps\Api.php at line 92 – mirocow\yandexmaps\Api::generateObject()
86878889909192939495969798

                         * Register client script.
     */
    protected function registerScript() {
        $js = "\$Maps = [];\nymaps.ready(function() {\n";

        foreach ($this->_objects as $var => $object) {
            $js .= $this->generateObject($object, $var) . "\n";
        }

        $js .= "});\n";

        Yii::$app->view->registerJs($js, View::POS_READY, self::SCRIPT_ID);
    }

5. in C:\OSPanel\domains\ad.loc\vendor\mirocow\yii2-yandex-maps\mirocow\yandexmaps\Api.php at line 60 – mirocow\yandexmaps\Api::registerScript()
54555657585960616263646566

    /**
     * Render client scripts.
     */
    public function render() {
        $this->registerScriptFile();
        $this->registerScript();
    }

    protected function encodeArray($array) {
        return count($array) > 0 ? Json::encode($array) : '{}';
    }

6. in C:\OSPanel\domains\ad.loc\vendor\mirocow\yii2-yandex-maps\mirocow\yandexmaps\Canvas.php at line 49 – mirocow\yandexmaps\Api::render()
43444546474849505152535455

                        }

    public function init() {
        Event::on(View::className(), View::EVENT_END_PAGE,
          function ($event) {
              if (!$this->isRendered) {
                  $this->getApi()->render();
                  $this->isRendered = true;
              }
          });
    }

    /**

7. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\Event.php at line 312 – mirocow\yandexmaps\Canvas::mirocow\yandexmaps\{closure}()
8. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\Event.php at line 312 – call_user_func:{C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\Event.php:312}()
9. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\Component.php at line 636 – yii\base\Event::trigger()
10. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\web\View.php at line 174 – yii\web\View::trigger()
11. in C:\OSPanel\domains\ad.loc\frontend\views\layouts\_clear.php at line 24 – yii\web\View::endPage()
18192021222324

                    <body>
<?php $this->beginBody() ?>
    <?php echo $content ?>
<?php $this->endBody() ?>
</body>
</html>
<?php $this->endPage() ?>

12. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\View.php at line 348
13. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\View.php at line 257 – yii\web\View::renderPhpFile()
14. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\widgets\ContentDecorator.php at line 79 – yii\web\View::renderFile()
15. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\Widget.php at line 109 – yii\widgets\ContentDecorator::run()
16. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\View.php at line 521 – yii\base\Widget::end()
17. in C:\OSPanel\domains\ad.loc\frontend\views\layouts\base.php at line 102 – yii\web\View::endContent()
96979899100101102

                        <div class="container">
        <p class="pull-left">&copy; <?= Yii::$app->name ?> <?php echo date('Y') ?></p>
    </div>
</footer>
<?= $this->context->renderPartial('//layouts/_place_modal') ?>
<?= SignIn::widget() ?>
<?php $this->endContent() ?>                

18. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\View.php at line 348
19. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\View.php at line 257 – yii\web\View::renderPhpFile()
20. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\widgets\ContentDecorator.php at line 79 – yii\web\View::renderFile()
21. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\Widget.php at line 109 – yii\widgets\ContentDecorator::run()
22. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\View.php at line 521 – yii\base\Widget::end()
23. in C:\OSPanel\domains\ad.loc\frontend\views\layouts\main.php at line 37 – yii\web\View::endContent()
31323334353637

                        ])
    ?>

<?php echo $content ?>

</div>
<?php $this->endContent() ?>                

24. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\View.php at line 348
25. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\View.php at line 257 – yii\web\View::renderPhpFile()
26. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\Controller.php at line 399 – yii\web\View::renderFile()
27. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\Controller.php at line 385 – frontend\controllers\AdController::renderContent()
28. in C:\OSPanel\domains\ad.loc\frontend\controllers\AdController.php at line 106 – frontend\controllers\AdController::render()
100101102103104105106107108109110111112

                                            'body' => 'Упс! Что-то не так.',
                        'options' => ['class' => 'alert-error']
                    ]);
            }
        }

        return $this->render('create', ['model' => $model]);
    }

    public function actionView(int $id) {
        $model = $this->loadModel($id);

        return $this->render('view', ['model' => $model]);

29. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\InlineAction.php at line 57 – frontend\controllers\AdController::actionCreate()
30. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\InlineAction.php at line 57 – call_user_func_array:{C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\InlineAction.php:57}()
31. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\Controller.php at line 157 – yii\base\InlineAction::runWithParams()
32. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\Module.php at line 528 – frontend\controllers\AdController::runAction()
33. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\web\Application.php at line 103 – yii\web\Application::runAction()
34. in C:\OSPanel\domains\ad.loc\vendor\yiisoft\yii2\base\Application.php at line 386 – yii\web\Application::handleRequest()
35. in C:\OSPanel\domains\ad.loc\frontend\web\index.php at line 22 – yii\web\Application::run()
16171819202122

                        require(__DIR__ . '/../../common/config/base.php'),
    require(__DIR__ . '/../../common/config/web.php'),
    require(__DIR__ . '/../config/base.php'),
    require(__DIR__ . '/../config/web.php')
);

(new yii\web\Application($config))->run();

`