Помогите несмышленному. Изучаю документацию. Не работает компонент.

InstantCMS 2.X

Мои логические несостыковки, или недосказанность в документации.

#1 23 марта 2019 в 17:15
День добрый.

Взялся за изучение документации по CMS, и, как водится, изначально решил попробовать стандартный Hello World.

Как сказано из документации по пути /system/controllers/mycomponent/ создал файл frontend.php с содержимым:

  1.  
  2. <?php
  3.  
  4. class mycomponent extends cmsFrontend{
  5.  
  6.  
  7. public function actionIndex(){
  8. echo 'its work?';
  9. }
  10.  
  11. }
  12.  
  13.  
Попытался перейти по адресу testsite/mycomponent/ — в ответ 404.

Полез копаться дальше. Обнаружил, что все компоненты зарегистрированы в БД в таблице cms_controllers.

По примеру заполнения других строк отправил запрос к БД:

  1.  
  2. INSERT INTO `admin_ic`.`ic_controllers` (`id`, `title`, `name`, `slug`, `is_enabled`, `options`, `author`, `url`, `version`, `is_backend`, `is_external`, `files`, `addon_id`) VALUES (NULL, 'Тестовый компонент', 'mycontroller', NULL, '1', NULL, 'x0k', 'testsite', '1.0', '1', '1', 'system:
  3. controllers:
  4. mycomponent:
  5. 0: frontend.php', NULL);
  6.  
Появились движения — компонент стал определяться в админке. Но всё так же при попытке вывода сообщения — тишина и 404.

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

Заранее спасибо.


UPD: может, нужно явно прописать маршрутизацию в компоненте? Или куда еще копать?
#3 23 марта 2019 в 17:58


Пробуйте изучать вместе с Генератор компонентов так процесс пойдет быстрей.

@DmitriyBarinov

Спасибо за совет.
Генератор компонентов уже установил, создал скелет компонента — все отобразилось и работает.
Но всё таки хотелось бы разобраться, что изначально я сделал не так.
#4 23 марта 2019 в 18:03
@x0k, вы всё сделали правильно, но полагаю, что где-то ошиблись в именовании.



#5 23 марта 2019 в 19:57
Добавлю. Искать ошибку в базе не надо.
Базово компонент отлично работает и без регистрации в controllers.
#6 23 марта 2019 в 21:40
Всем спасибо, разобрался.

Теперь, попытавшись почитать про модели, обнаружил, что в документации ничего нет по разделам "изменение записей" и далее.

Собственно, вот: Изменение записей, пусто.

UPD: полазил по исходникам других компонентов, а именно — форум от Kreator — обнаружил методы insert, update и т.д. Но хотелось бы все же из документации раскурить, как ими адекватно пользоваться, а не методом испанского тыка в воздух.
#7 23 марта 2019 в 21:50

что в документации ничего нет по разделам "изменение записей"

@x0k
Документация постепенно появляется… разработчиков рас два, всё не успевают
#8 23 марта 2019 в 21:53


что в документации ничего нет по разделам "изменение записей"

@x0k
Документация постепенно появляется… разработчиков рас два, всё не успевают

Killer's dream

Так понимаю, все же придется почерпывать знания из чужого кода?
#9 23 марта 2019 в 22:11
Для таких же, как и я, только начинающих разбираться в этом всём.

Метод update
  1.  
  2. $this->update($table,$id,array('key'=>'value'))
  3.  
Соответственно:
$table — таблица, в которой обновляем запись.
$id — уникальный ID записи (тот, что Auto Increment)
array('key'=>'value') — массив с заменяемыми данными, где key — имя поля, в котором заменяем данные, value — значения.

Как раскопаю остальное — дополню.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.