Модуль блога подключён как приложение. Также сайт разделён на public_html, yii (fronted, common,backend) В backend в блоге картинки загружаются через kartik\widgets\FileInput и fotorama. На главной странице фотографии в постах отображаются сейчас только из imperavi-widget. Как сделать, чтобы и эти также отображались?
У меня пока недостаточно сообщений, чтобы Вам '+" поставить) но вопросы есть ещё))
Этот файл при установке в игнор попал- и я вставил его из другого проекта- Admin LTE появилась..но зарегистрироваться нельзя и я, чтобы зайти- скопировал данные админа из другой базы, но это, наверное, не правильно..Cейчас, получается, любой пользователь зарег. во fronted может зайти и в backend.
И вот теперь, чтобы cлева link 'Tеги' появился, как я понимаю -надо в backand/veiws/layouts/left.php вписать <code lang="php">
['label' => 'Теги', 'icon' => 'tags', 'url' => ['/tag']],
</code> а что ещё нужно подключить?
А вообще то подключать ничего не нужно, просто используйте (хотя на первый взгляд он сыроват),
Зачем он Вам только.
Всего то что нужно 3 модели, Блог, Таг, ТагФорм, в Блоге делаете связь гетТагс, блог->тагс будут тэги блога. Форма на создание и редактирования тага, Таг, это модель АР, три поля, id,tag,blog_id
Все это делается за 5 мин с помощью Гии
Да, он сырой..но лучше, чем ничего) Структуру проекта, однозначно, придётся переделывать, только у меня ведь есть такая связь уже и поля в таблице. Или нужно заново именно под этот модуль генерировать в Gii?
Сейчас пробую параллельно установить заново advanced с миграциями и модулями тегов, так вот php-init запустился, миграции тоже, в базе они есть. В настройках Open Server домены прописаны. только вот fronted\web запускается нормально, а backend\web c ошибкой:
в процессе php-init
Цитата:
generate cookie validation key in backend/config/main-local.php
PHP Warning: file_get_contents(D:/sites/interjobs/backend/config/main-local.php): failed to open stream: No such file or directory in D:\sites\interjobs\init on line 211
Warning: file_get_contents(D:/sites/interjobs/backend/config/main-local.php): failed to open stream: No such file or directory in D:\sites\interjobs\init on line 211
а не name name ? (Добавление)
а, я понял, afterFind нужен, в нем Вы хотите наполнить свойство $this->newtags, но тогда таг Вам не нужен, а name (Добавление)
или что в нем, в этом name ? название его какое то или все же значение
Да, верно, по идее свойство $this->newtags нужно наполнить, но
так я уже пробовал с "name' - теги не сохраняются.
Если смотрепть в логах 2 metod POST admin.site.com/blog/blog/update?id=5 то там явно ошибка проблема со связью последняя строчка логов "0=1" - это явно ошибка.(скрин внизу) на строке 230 там:
тогда бесполезно,
заверните попробуйте на yii2/backend/controllers/TimeCon troller (Добавление)
Возможно стоит переделать структуру проекта, в расширенном проекте YII2 есть папки frontend, backend, common, vendor, и тд. Тогда backend - будет Вашей админкой, фрон - фронтом, если он у Вас есть, в папке common можно разместить общие модели и контроллеры, в бекэнде разместите все что там нужно и контролеры Time и Таг, их модели, представления, модуль блога - оставляйте в вендор, он нормально подтянется.
Тогда у Вас не будет путаницы в конфигах и неймспейсах
если так добавить, то все время какая-то ошибка синтаксиса, пробовал и ',' добавить и ');' в конце
потому что добавляете тоже самое,
может с неймспейсами что то не так
попробуйте перенаправить в site\public_html\admin\index.php
во второй строке так:
if (substr($_SERVER['REQUEST_URI'], 0, 5) == '/Time' ){
require(__DIR__ . '/../../yii2/common/web/index.php'); exit();
} (Добавление)
и открыть вкладку 'Time' в админке, то выводит следующее:
Цитата:
Warning: require(D:\sites\site\public_html\admin/../../yii2/common/web/index.php): failed to open stream: No such file or directory in D:\sites\site\public_html\admin\index.php on line 4
Fatal error: require(): Failed opening required 'D:\sites\site\public_html\admin/../../yii2/common/web/index.php' (include_path='.;w:/modules/php/PHP-5.6-x64;w:/modules/php/PHP-5.6-x64/PEAR/pear') in D:\sites\site\public_html\admin\index.php on line 4
В common нет TimeController, есть только Сontroller (Generator\CRUD) в models- Time.php, TimeSearch
Метод public function afterFind() Вам не нужен, это делает метод public function getTags(), т.е. в свойстве blog->tags будут тэги этого блога. Только вот связи не вижу. Судя по всему вам нужна колонка blog_id в модели Таг. А добавлять как обычно. model->save()
$model = new Tag();
$model->blog_id = 123;
....
$model->save();
как то так (Добавление)
andrewkard пишет:
я добавил поле 'tag' в таблицу
это не нужно
А ошибка 'Getting Unknown Property ' c атрибутом 'tag' исчезла только когда добавил в таблицу -либо полностью закомм. 'afterFind'
Попробую объяснить как бы хотелось реализовать этот метод, хотя сам не оч.понимаю логику))
afterFind происходит когда загрузились данные из базы в модель, заполнили данные модели т.е. когда в посте редактирования нажали 'update', то туда должны подтягиваться теги, которые связаны (а они, по идее, хранятся в 'newtags' , а изначально он = 'null' и соответственно, в afterFind мы их наполняем. При этом дёргая связь "Get tags ' После этого, должны получить из неё массив $this ->tags (т.к. это 'HasMany' и дальше надо сделать из этого массив, чтобы скормить его vidget Select 2
Для этого берем данные $this ->tags с помощью ArrayHelper:: map- передаем данные и говорим, что нужно, чтобы был атрибут 'tag' из модели Таг.php ($property tag ) - он же был и ключем и значением.- это так надо для Select 2 т.е. он заполняется и во views нужно передать.
У меня есть таблица "blog_tag' и связь 'getBlogTag"- она как-бы промежуточная между 'blog' и 'tag' и в ней есть 'blog_id' и 'tag_id".
Но вот тут (в тексте ошибки есть четко файл и номер строки, которая вызвала ошибку):
нужно смотреть на свойство $this->tags, и судя по методу getTags() в этом свойстве будут строки AR, модели Tag, далее смотрим что делает ArrayHelper::map, она пытается создать карту из массива $this->tags с ключами (в данном случае атрибутами) tag tag, которого в модели Tag нет, об этом и ошибка. (Добавление)
Sandro_s пишет:
Но как это исправить?
Нужно понять что Вы хотите видеть в $this->newtags
Основная задача- чтобы можно было создавать новые теги в постах блога.
Как я понимаю..если смотреть на связь 'function afterFind' в Blog.php, то чтобы передать данные, нужен атрибут tag в модели Tag.php" Но в таблице tag у меня только 'id' и 'name', как и в Tag.php - я добавил поле 'tag' в таблицу, в @property integer, в 'rules' и 'attributeLabels'. Ошибка исчезла, только теги не сохраняются и не создаются новые.
В приложении админ по пути public_html\admin нет контроллеров Time и Тег, на что и ругается.
Попробуйте в конфиг public_html\admin\index.php добавить require(__DIR__ . '/../yii2/backend/config/main.php') (Добавление)
судя по Вашему сообщению, они тут
Sandro_s пишет:
'backend' находится в site\yii2\ в ней controllers (Site.controllers и Time.controllers)
Папка "backend' есть в site\public_html\admin\backend в ней : views\Time (form.php, search,create,index,update,view)
и 'backend' находится в site\yii2\ в ней controllers (Site.controllers и Time.controllers)
т.е. этот код добавить в TimeController нужно? (site\yii2\backend\controllers) только у меня нет папки 'web' в common
Все равно не ясно, блог как модуль, я понял, аминка, в которой ссылка, где она. И при чем к блогу Time и Tags
а ссылка какая именно?
Папка 'admin' находиться в 'public_html' в ней есть backend\views\Time
но ещё папка 'time' есть yii2\backend\views\time-
когда сгенерировался CRUD, то создались файлы там.
я когда нажимаю на вкладку "Time', то получаю ошибку: 404 тоже самое с Тегами
а точка входа у Вас где (index.php), Вы находитесь в админке, которая лежит не в yii2\ backend ?
Или тут? public (admin
У меня, получается, блог подключен как отдельный модуль через composer. Он находиться в папке vendor. До этого он был в backend и я решил его перенести и удалил от туда все файлы.
index.php (блога) лежит в dir: site\yii2\vendor\medeyacom\yii2-blog\views\blog\index.php