Видео-туториал: компонент для 2.0

+54
3.96K
r2
Привет, друзья.

Как обещал ранее, выкладываю большой видео-туториал по созданию компонента для InstantCMS 2.0.

В процессе туториала мы напишем полностью рабочий компонент "Фотобитвы" с нуля. Подробнее о том, что это за компонент и как он будет работать, объясняется в начале первой части.

Туториал получился объемным, из нескольких частей, общей продолжительностью порядка 3 часов. Я старался подробно объяснять те места, с которыми наиболее часто сталкиваешься при создании типовых компонентов.

Часть 1

Часть 2

Часть 3

Часть 4


Следующие части на подходе: создание админки, интеграция с другими компонентами, создание виджетов

PS: Я знаю, что подобные туториалы в текстовом виде гораздо полезнее, равно как и полная документация. Но, поскольку видео снять банально быстрее, пока будем использовать этот формат. До тех пор, пока не будет готова полная текстовая документация.
0
Реклама Реклама #
0
mihalich mihalich 7 лет назад #
Спасибо! очень полезно.
0
RIf RIf 7 лет назад #
Круть, бум смотреть и учиться. Спасибо.
0
SJen SJen 7 лет назад #
Отлично, видео тоже хорошо glasses
0
Def Def 7 лет назад #
может сразу и компонент выложите на обозрение?:) было бы очень кстати:)
+4
r2 r2 7 лет назад #
выложу, но чуть позже
осталось снять часть про создание админки
-2
Алексей Т Алексей Т 7 лет назад #
БОЛЬШОЕ СПАСИБО!
Очень ждем админку! joke
0
Stecc Stecc 7 лет назад #
r2, Спасибо огромнейшее! Видео-инструкция самый нужный материал.
И подскажите пожалуйста, что за софт вы используете для кода в видео?
+2
r2 r2 7 лет назад #
да, это NetBeans с пакетом PHP
+3
Князь Мышкин Князь Мышкин 7 лет назад #
R2, спасибо тебе, дружище, за твои труды. И не только тебе, а всему комьюнити!

А теперь можно офф-топика чуточку? Я тут появляться стал не так часто, может уже кто задавал вопрос.
Официальный сайт планируется на двоечку переводить? И как скоро?
0
SpideR SpideR 7 лет назад #
На сколько я помню еще до выхода 1.10 или 1.10.3 Fuze говорил что сайт переедет сразу на двойку. Раз сказал - значит переедет. smile
+2
r2 r2 7 лет назад #
В ближайшее время не планируется. Как минимум, до выхода форума для 2.0.
+3
zotak zotak 7 лет назад #
За инструкцию спасибо!
Слова "В ближайшее время не планируется. Как минимум, до выхода форума" пугают, надеялся что форум выйдет в ближайшее время.
0
picaboo picaboo 7 лет назад #
и мигратора :)
0
NeBox NeBox 7 лет назад #
Огромное спасибо!
0
Су-27 Су-27 7 лет назад #
Пошла жара! laugh - r2 спасибо hoho
+4
Таня Таня 7 лет назад #
Спасибо!
Еще очень хочется такое же про создание шаблонов.
-1
Dublic Dublic 7 лет назад #
крутотень! такое видео, стразу и php и движок изучаешь
0
Скорпион Скорпион 7 лет назад #
Уважаемый r2 - подскажите.
Ролик "Видео-туториал- компонент для InstantCMS 2 [Часть 3]" - 16:12.
В этом месте идет обсуждение как создать "уведомление", а именно передача параметра получателя уведомления.
Так вот при указанной Вами строчки:
Код PHP:
  1. $messenger->addRecipient(1);
Получил такой вот результат:
Код PHP:
  1. Ошибка в запросе БД:
  2. Column 'user_id' cannot be null
  3. INSERT INTO cms_users_notices (`user_id`, `content`, `options`, `actions`)
  4. VALUES (NULL, 'Фотобитва \"Битва первая моя\" требует проверки перед запуском', NULL, '---\nview:\n title: Показать\n href: /photobattle/battle/1\n')
Естественно это после полностью определения всех параметров и передачи их функции:
Код PHP:
  1. $messenger->sendNoticePM($notice);
Понимаю что не передается id пользователя. Перепроверяю каждую букву в написанном коде. Даже обратился к готовому компоненту, но там уже немного другой код:
Код PHP:
  1. $messenger->addRecipient( $this->options['admin_id'] );
Понятно что об этом будет дальше в уроке, но у Вас то работает и так.
Вообщем немного помучившись и поэкспериментировав решил обернуть 1 в кавычки:
Код PHP:
  1. $messenger->addRecipient("1");
И о чудо - все заработало.
Понятное дело - буду дальше продолжать слушать урок - но хотелось бы узнать - от чего так произошло.

Почему у Вас данная функция приняла числовой параметр - а у меня потребовала текстовый?
0
Скорпион Скорпион 7 лет назад #
Вопрос таки остался открытым scratch
0
Loadырь Loadырь 7 лет назад #
тут есть два варианта решения вопроса:
1) в файле \system\controllers\messages\frontend.php в строке 26 заменяем
Код PHP:
  1. $this->recipients[] = $user_id;
на
Код PHP:
  1. $this->recipients[] = array ('id' => $user_id);
или
2) в файле \system\controllers\messages\model.php в строке 364 в функции addNotice заменяем
Код PHP:
  1. 'user_id' => $recipient['id'],
на
Код PHP:
  1. 'user_id' => $recipient,
Какая правка из них правильнее и чем они могут вылезти впоследствии знает только r2
0
joo a joo a 7 лет назад #
R2, большое спасибо за туториал.
Просьба подсказать почему при создании битвы появляется такое сообщение:
Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'photobattle' does not have a method 'validate_requered' in \system\core\action.php on line 29

в екшене нет такого метода, несколько раз проверил код
Код PHP:
  1. $is_submitted = $this ->request -> has('submit');
  2. $battle = $form -> parse($this -> request, $is_submitted);
  3. if($is_submitted){
  4. $errors = $form->validate($this, $battle);
  5. if(!$errors){
  6. $battle_id = $this -> model -> addBattle($battle);
  7. $this -> redirectToAction ('battle', array($battle_id));
  8. }
  9. if($errors){
  10. cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error');
  11. }
  12. }
0
r2 r2 7 лет назад #
В форме у вас добавлено правило валидации requEred вместо required
0
joo a joo a 7 лет назад #
Предполагаю, что call_user_func_array() функция системы, и она не получает параметра validate_requered
Подскажите где копать,
0
joo a joo a 7 лет назад #
Редирект не происходит и в таблицу не добавляется
0
joo a joo a 7 лет назад #
Да, спасибо нашел, теперь сообщение об ошибке пропало, но в базу битва не добавляется. и редирект на екшен battle не происходит
Код PHP:
  1. class modelPhotobattle extends cmsModel {
  2. public function addBattle($battle) {
  3. $battle['user_id'] = cmsUser::get('id');
  4. return $this->insert('photobattles', $battle);
  5. }
0
joo a joo a 7 лет назад #
Проверил таблицу в базе, права на папку upload, метод в модели, передача параметров в екшене. Что еще можно перепроверить подскажите.
0
joo a joo a 7 лет назад #
Проблема с методом добавления записи в базу или передачей параметров в этот метод, а так же редирект на указанный екшн 'battle' не работает.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.