Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
Если честно никаких ограничений по структуре в моем приложении нет. Где вам удобно туда и кладите расширения. Я бы сделал так: общие в папку common/extensions а специфические в front(back)end/extensions соответсвенно.
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
Спасибо за ответ.
Начал делать виджет, но из-за своей "зелености" ловлю непонятные мне ошибки. А именно: делаю виджет вывода последних трех сообщений блога (Ваш модуль Blog) на главную страницу.
Создал папку frontend/extentions/
туда поместил файл с классом FrontBlogWidget
следующего содержания:
и получаю ошибку:
Помогите пожалуйста понять, куда копать? Я так понимаю не инициализируются переменные модуля Блогов, но как это решить?
Заранее спасибо.
Начал делать виджет, но из-за своей "зелености" ловлю непонятные мне ошибки. А именно: делаю виджет вывода последних трех сообщений блога (Ваш модуль 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 раза.
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
вам ошибку перевести?
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
Нет, ошибку переводить не надо, спасибо. Я не пойму, почему при подключении модели из контроллера модуля - все ок, а если из моего виджета - то дает ошибку.
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
я не вижу вообще у вас импорта класса News. Он у вас в текущем неймспейсе?)a-prof писал(а):Нет, ошибку переводить не надо, спасибо. Я не пойму, почему при подключении модели из контроллера модуля - все ок, а если из моего виджета - то дает ошибку.
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
прошу прощения, не из того модуля скопировал. Сейчас исправил. Но мой модуль новостей аналогичен модулю блогов. Выдает аналогичную ошибку.
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
теперь скопируйте модель Bloga-prof писал(а):прошу прощения, не из того модуля скопировал. Сейчас исправил. Но мой модуль новостей аналогичен модулю блогов. Выдает аналогичную ошибку.
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
Я не вносил в модель 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]);
}
}
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
теперь подключение модуля из конфига
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
Конфиг Frontend
Конфиг Common
Код: Выделить всё
'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'
],
.....
Код: Выделить всё
...
'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 раз.
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
Наверное немного перефразирую вопрос.
Подскажите пожалуйста, как вообще правильно выводить данные какого либо модуля от VOVA07 (например перечень последних постов блога) на главную или страницу иного модуля (например в модуле каталога)?
Что важно учесть и не забыть и какие правила хорошего тона?
Подскажите пожалуйста, как вообще правильно выводить данные какого либо модуля от VOVA07 (например перечень последних постов блога) на главную или страницу иного модуля (например в модуле каталога)?
Что важно учесть и не забыть и какие правила хорошего тона?
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
виджетa-prof писал(а):Наверное немного перефразирую вопрос.
Подскажите пожалуйста, как вообще правильно выводить данные какого либо модуля от VOVA07 (например перечень последних постов блога) на главную или страницу иного модуля (например в модуле каталога)?
Что важно учесть и не забыть и какие правила хорошего тона?
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
Я и пытаюсь сделать виджет. Но наверное что-то где-то пропустил или не учел и поэтому виджет не работает. Можете подсказать, как заставить его заработать? Как инициализировать переменные необходимые для UploadBehavior.php если они объявляются в самом Module.php.
Включение этого файла в виджет с помощью use ничего не дало. Ошибка та же.
Включение этого файла в виджет с помощью use ничего не дало. Ошибка та же.
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
@a-prof обновите пожалуйста модуль блогов. Я пофиксил данный баг. Пока временно, так как данный баг вынуждает найти новый путь конфига модели и модуля, и это оказывается не так просто. В скором времени будет более правильная реализация.
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
Да, так работает. Спасибо!
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
Пробую установить шаблон, Yii ругается
Дело в том, что я работаю в Vagrant, а в виртуал боксе запрещены симлинки. Как можно это решить?
На это: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>
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
Всё, сам починил.
В файле common/config/main.php
А еще правильнее добавить это в main-local.php, как я понимаю
В файле common/config/main.php
Код: Выделить всё
'assetManager' => [
'linkAssets' => false
],
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
виртуал бокс не касается внутренностей ваших вирт. машинifelse писал(а):в виртуал боксе запрещены симлинки. Как можно это решить?
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
симлинки в shared folder отключены по-умолчанию для безопастности.zelenin писал(а):виртуал бокс не касается внутренностей ваших вирт. машинifelse писал(а):в виртуал боксе запрещены симлинки. Как можно это решить?
Re: Yii2-Start альтернативный шаблон для быстрого старта нового проекта.
Что-то я не очень понимаю right way разработки своего кода под расширением. Правильно ли создать в frontend (если мой код касается только его) структуру:
А если я создаю то, что касается всего приложения:
Кто вообще как делает в своих разработках?
Код: Выделить всё
/- frontend
-- controllers/
-- models/
-- views/
-- ....
Код: Выделить всё
/- common/
-- modules/
--- foo/
---- controllers/
---- ....
---- Foo.php
--- bar/
---- ....