Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Выкладываем свои наработки
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение vova07 » 2015.02.15, 22:20

Если честно никаких ограничений по структуре в моем приложении нет. Где вам удобно туда и кладите расширения. Я бы сделал так: общие в папку common/extensions а специфические в front(back)end/extensions соответсвенно.

a-prof
Сообщения: 37
Зарегистрирован: 2015.01.08, 22:41

Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение a-prof » 2015.02.16, 00:30

Спасибо за ответ.
Начал делать виджет, но из-за своей "зелености" ловлю непонятные мне ошибки. А именно: делаю виджет вывода последних трех сообщений блога (Ваш модуль Blog) на главную страницу.
Создал папку frontend/extentions/
туда поместил файл с классом FrontBlogWidget
следующего содержания:

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

namespace frontend\extentions;

use vova07\blogs\models\frontend\Blog;
use Yii;
use yii\base\Widget;
use yii\helpers\Html;

class FrontBlogWidget extends Widget{

    public function run(){
        $blogs = Blog::find()->all(); <<<<<ОШИБКА ЗДЕСЬ
        var_dump($blogs);
    }
} 
и получаю ошибку:

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

Invalid Parameter – yii\base\InvalidParamException
Path must be set for all attributes.

1 in E:\OpenServer\domains\start\vendor\vova07\yii2-fileapi-widget\behaviors\UploadBehavior.php

    public function attach($owner)
    {
        parent::attach($owner);
 
        if (!is_array($this->attributes) || empty($this->attributes)) {
            throw new InvalidParamException('Invalid or empty attributes array.');
        } else {
            foreach ($this->attributes as $attribute => $config) {
                if (!isset($config['path']) || empty($config['path'])) {
                    throw new InvalidParamException('Path must be set for all attributes.'); <<<<<ОШИБКА ЗДЕСЬ
Помогите пожалуйста понять, куда копать? Я так понимаю не инициализируются переменные модуля Блогов, но как это решить?
Заранее спасибо.
Последний раз редактировалось a-prof 2015.02.16, 00:43, всего редактировалось 2 раза.


a-prof
Сообщения: 37
Зарегистрирован: 2015.01.08, 22:41

Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение a-prof » 2015.02.16, 00:35

Нет, ошибку переводить не надо, спасибо. Я не пойму, почему при подключении модели из контроллера модуля - все ок, а если из моего виджета - то дает ошибку.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение zelenin » 2015.02.16, 00:37

a-prof писал(а):Нет, ошибку переводить не надо, спасибо. Я не пойму, почему при подключении модели из контроллера модуля - все ок, а если из моего виджета - то дает ошибку.
я не вижу вообще у вас импорта класса News. Он у вас в текущем неймспейсе?)

a-prof
Сообщения: 37
Зарегистрирован: 2015.01.08, 22:41

Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение a-prof » 2015.02.16, 00:44

прошу прощения, не из того модуля скопировал. Сейчас исправил. Но мой модуль новостей аналогичен модулю блогов. Выдает аналогичную ошибку.

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение zelenin » 2015.02.16, 00:45

a-prof писал(а):прошу прощения, не из того модуля скопировал. Сейчас исправил. Но мой модуль новостей аналогичен модулю блогов. Выдает аналогичную ошибку.
теперь скопируйте модель Blog

a-prof
Сообщения: 37
Зарегистрирован: 2015.01.08, 22:41

Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение a-prof » 2015.02.16, 00:52

Я не вносил в модель Blog.php изменений. Все как в оригинальном модуле yii2-start-blogs-module/models/frontend/Blog.php

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

<?php

namespace vova07\blogs\models\frontend;

use Yii;

/**
 * Class Blog
 * @package vova07\blogs\models\frontend
 * Blog model.
 *
 * @property integer $id ID
 * @property string $title Title
 * @property string $alias Alias
 * @property string $snippet Intro text
 * @property string $content Content
 * @property integer $views Views
 * @property integer $status_id Status
 * @property integer $created_at Created time
 * @property integer $updated_at Updated time
 */
class Blog extends \vova07\blogs\models\Blog
{
    /**
     * @var string Created date
     */
    private $_created;

    /**
     * @var string Updated date
     */
    private $_updated;

    /**
     * @return string Created date
     */
    public function getCreated()
    {
        if ($this->_created === null) {
            $this->_created = Yii::$app->formatter->asDate($this->created_at);
        }
        return $this->_created;
    }

    /**
     * @return string Updated date
     */
    public function getUpdated()
    {
        if ($this->_updated === null) {
            $this->_updated = Yii::$app->formatter->asDate($this->updated_at);
        }
        return $this->_updated;
    }

    /**
     * @inheritdoc
     */
    public function scenarios()
    {
        $scenarios = parent::scenarios();
        $scenarios['create'] = ['title', 'snippet', 'content', 'preview_url', 'image_url'];
        $scenarios['update'] = ['title', 'snippet', 'content', 'preview_url', 'image_url'];

        return $scenarios;
    }

    /**
     * Update views counter.
     *
     * @return boolean Whether views counter was updated or not
     */
    public function updateViews()
    {
        return $this->updateCounters(['views' => 1]);
    }
}

 

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение zelenin » 2015.02.16, 00:55

теперь подключение модуля из конфига

a-prof
Сообщения: 37
Зарегистрирован: 2015.01.08, 22:41

Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение a-prof » 2015.02.16, 01:02

Конфиг Frontend

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

'id' => 'app-frontend',
    'name' => 'TEST',
    'language' => 'ru',
    'basePath' => dirname(__DIR__),
    'defaultRoute' => 'site/default/index',
    'modules' => [
        'site' => [
            'class' => 'vova07\site\Module'
        ],
        'blogs' => [
            'controllerNamespace' => 'vova07\blogs\controllers\frontend'
        ],
        'pages' => [
            'controllerNamespace' => 'vova07\pages\controllers\frontend'
        ],
        'news' => [
            'controllerNamespace' => 'vova07\news\controllers\frontend'
        ],        
        .....
Конфиг Common

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

...
'modules' => [
        'users' => [
            'class' => 'vova07\users\Module',
            'robotEmail' => 'no-reply@domain.com',
            'robotName' => 'Robot'
        ],
        'blogs' => [
            'class' => 'vova07\blogs\Module'
        ],
        .....
         
Последний раз редактировалось a-prof 2015.02.17, 02:50, всего редактировалось 1 раз.

a-prof
Сообщения: 37
Зарегистрирован: 2015.01.08, 22:41

Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение a-prof » 2015.02.16, 20:40

Наверное немного перефразирую вопрос.
Подскажите пожалуйста, как вообще правильно выводить данные какого либо модуля от VOVA07 (например перечень последних постов блога) на главную или страницу иного модуля (например в модуле каталога)?
Что важно учесть и не забыть и какие правила хорошего тона?

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение zelenin » 2015.02.16, 21:48

a-prof писал(а):Наверное немного перефразирую вопрос.
Подскажите пожалуйста, как вообще правильно выводить данные какого либо модуля от VOVA07 (например перечень последних постов блога) на главную или страницу иного модуля (например в модуле каталога)?
Что важно учесть и не забыть и какие правила хорошего тона?
виджет

a-prof
Сообщения: 37
Зарегистрирован: 2015.01.08, 22:41

Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение a-prof » 2015.02.17, 01:38

Я и пытаюсь сделать виджет. Но наверное что-то где-то пропустил или не учел и поэтому виджет не работает. Можете подсказать, как заставить его заработать? Как инициализировать переменные необходимые для UploadBehavior.php если они объявляются в самом Module.php.
Включение этого файла в виджет с помощью use ничего не дало. Ошибка та же.

Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение vova07 » 2015.02.17, 12:42

@a-prof обновите пожалуйста модуль блогов. Я пофиксил данный баг. Пока временно, так как данный баг вынуждает найти новый путь конфига модели и модуля, и это оказывается не так просто. В скором времени будет более правильная реализация.

a-prof
Сообщения: 37
Зарегистрирован: 2015.01.08, 22:41

Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение a-prof » 2015.02.17, 23:27

Да, так работает. Спасибо!

Аватара пользователя
ifelse
Сообщения: 227
Зарегистрирован: 2013.02.05, 13:05

Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение ifelse » 2015.02.18, 14:05

Пробую установить шаблон, Yii ругается
PHP Warning – yii\base\ErrorException
symlink(): Protocol error
На это:

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

<p><img src="<?= $this->assetManager->publish('@vova07/themes/site/assets/images/slider/bg2.png')[1] ?>" alt="Yii 2" /></p>
Дело в том, что я работаю в Vagrant, а в виртуал боксе запрещены симлинки. Как можно это решить?

Аватара пользователя
ifelse
Сообщения: 227
Зарегистрирован: 2013.02.05, 13:05

Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение ifelse » 2015.02.18, 14:10

Всё, сам починил.
В файле common/config/main.php

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

        'assetManager' => [
            'linkAssets' => false
        ],
А еще правильнее добавить это в main-local.php, как я понимаю

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение zelenin » 2015.02.18, 14:14

ifelse писал(а):в виртуал боксе запрещены симлинки. Как можно это решить?
виртуал бокс не касается внутренностей ваших вирт. машин

Аватара пользователя
ifelse
Сообщения: 227
Зарегистрирован: 2013.02.05, 13:05

Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение ifelse » 2015.02.18, 14:46

zelenin писал(а):
ifelse писал(а):в виртуал боксе запрещены симлинки. Как можно это решить?
виртуал бокс не касается внутренностей ваших вирт. машин
симлинки в shared folder отключены по-умолчанию для безопастности.

Аватара пользователя
ifelse
Сообщения: 227
Зарегистрирован: 2013.02.05, 13:05

Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Сообщение ifelse » 2015.02.18, 16:24

Что-то я не очень понимаю right way разработки своего кода под расширением. Правильно ли создать в frontend (если мой код касается только его) структуру:

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

/- frontend
 -- controllers/
 -- models/
 -- views/
 -- ....
А если я создаю то, что касается всего приложения:

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

/- common/
 -- modules/
 --- foo/
 ---- controllers/
 ---- ....
 ---- Foo.php
 --- bar/
 ---- ....
Кто вообще как делает в своих разработках?

Ответить