Методы в system/core/model.php

#1 4 октября 2014 в 12:46
uploader.php | model.php

Так как документации еще нет, возникает много вопросов. Предлагаю в этой теме задавать вопросы по model.php, а также отвечать на вопросы по мере возможности.

Буду первым. Как очистить таблицу в бд от записей? Метода truncate ($table_name) не нашел :(
Возможно, он и не нужен, тогда другой вопрос. Каким методом фильтрации выбрать все строки в таблице, чтобы потом удалить с помощью deleteFiltered.
#2 4 октября 2014 в 12:51

Как очистить таблицу в бд от записей?

Евгений
Что мешает использовать в модели
  1. $this->db->query('TRUNCATE TABLE `table_name`');
#3 4 октября 2014 в 16:39


Как очистить таблицу в бд от записей?

Евгений
Что мешает использовать в модели
  1. $this->db->query('TRUNCATE TABLE `table_name`');

Fuze
Так сработало
  1. $this->db->query('TRUNCATE TABLE `cms_table_name`');
А мешает желание делать по феншую, т.е. методами. А то, получается, напрямую через query можно ручками все запросы писать…
#4 5 октября 2014 в 17:03


Что мешает использовать в модели

  1. $this->db->query('TRUNCATE TABLE `table_name`');

Fuze

Fuze, дорогой!
Ну неужели не жалко времени – в подобных форумах обсуждать все эти бесконечно малые, но в то же время фундаментальные вопросы?
Вот здесь: instantcms.ru/forum/thread19516.html как раз призываю тех, кто в теме по макушку, доделать систематический мануал для разработчиков (который уже блестяще начат) и добавить к нему сводные списки (таблицы) всех стандартных методов, свойств, констант и переменных.
Уверен, что лучше время и силы сконцентрировать на этом фундаменте!
«...
Не забыл, и слава Богу, нанести орнамент.
Что ж забыл? Забыл немного – заложить фундамент!
...»
© Михаил Щербаков
#5 5 октября 2014 в 17:15

Ну неужели не жалко времени – в подобных форумах обсуждать все эти бесконечно малые, но в то же время фундаментальные вопросы?

Aquarius
Написать 40 букв мне не жалко.

сводные списки (таблицы) всех стандартных методов, свойств, констант и переменных.

Aquarius
Т.е. вы предлагаете переписать все комментарии к методам из кода в мануал?
#6 6 октября 2014 в 12:36

сводные списки (таблицы) всех стандартных методов, свойств, констант и переменных.

Aquarius
Т.е. вы предлагаете переписать все комментарии к методам из кода в мануал?

Fuze
Воистину – ответ математика laugh
Но, надеюсь, это была шутка юмора, потому что разница немалая между комментариями к методам и сводной справочной таблицей. Я уже не говорю о том, что в коде все эти сущности разбросаны по десяткам файлов и разбавлены тысячами строк, от которых как раз и надо бы абстрагироваться разработчику – для чего, кстати, вся эта иерархия классов и создавалась.
Разумеется, держа всю эту структуру у себя в голове, искренне не понимаешь: чего этим придуркам не хватает, всё же так здорово написано?!
А не хватает некоего интерфейса, который позволит кратко и эффективно, во-первых, обозревать все эти богатства человеку, пока не въехавшему глубоко (все, на первых порах, сталкиваются с такой необходимостью), а во-вторых, видеть, как на очень наглядных примерах это работает – что мне очень нравится в той части мануала, который уже сделан. Я никогда не буду делать сайт-магазин, но магазинная аналогия абсолютно понятна даже такому дураку, как я!
А если серьёзно: спасибо за то, что уже сделано! Мне кажется, вы действительно можете получить гораздо больше разработчиков (а в конечном счёте, и славы, и денег), если снизите планку входа в свой объектный лего-конструктор…
#7 6 октября 2014 в 14:43
Aquarius, все будет со временем, нужно просто набраться терпения. Останутся самые стойкие)
#8 6 октября 2014 в 16:09
Предложение разработчикам:
в статье на хабре описывается два способа создания диаграммы классов по существующему коду.
Эти диаграммы классов стали бы нужной частью документации.

Пытался самостоятельно составить подобные диаграммы но не хватает времени разобраться.
#9 7 октября 2014 в 15:02

Aquarius, все будет со временем, нужно просто набраться терпения. Останутся самые стойкие)

Fuze
«...
Жаль только – жить в эту пору прекрасную
Уж не придётся – ни мне, ни тебе.»
© Некрасов
crazy
#10 10 октября 2014 в 22:12
Как выше написал Fuze это скорее всего будет правильный вариант, так как метод TRUNCATE будет избыточный в системе, его делают очень редно и ничего не мешает его оформить обычным запросом, если учесть что там и параметр только 1 — это название таблицы. :)
#11 22 октября 2014 в 12:51

сводные списки (таблицы) всех стандартных методов, свойств, констант и переменных.

Aquarius
Т.е. вы предлагаете переписать все комментарии к методам из кода в мануал?

Fuze
Fuze, вот столкнулся именно с тем, о чём мы дискутировали: из видео-туториала очевидно, что я могу использовать в формах стандартное поле "дата"
  1. 'childs' => array(
  2. new fieldDate('work_date', array( ...
Но попытка то же самое проделать с полем "время" ни к чему не привела.
Я пробовал варианты типа "fieldTime(..." в нескольких вариациях...
То ли такой возможности нет, то ли я просто туплю – как об этом узнать без документации, без сводной таблицы?
Потерял уже прорву времени на поиски по исходникам – подсказки там, увы, тоже не нашёл...
Может посоветуете? Хотя бы место кода про "fieldDate", где, по аналогии, можно было бы описать и "fieldTime"...
Заранее спасибо!
#12 22 октября 2014 в 14:26

как об этом узнать без документации, без сводной таблицы?

Aquarius
Все классы полей лежат в /system/fields

Хотя бы место кода про "fieldDate", где, по аналогии, можно было бы описать и "fieldTime"

Aquarius
Возможно вам подойдет fieldAge. Или же написать свой класс поля по аналогии с существующими.
#13 22 октября 2014 в 16:00

Я пробовал варианты типа "fieldTime(..." в нескольких вариациях...
То ли такой возможности нет, то ли я просто туплю – как об этом узнать без документации, без сводной таблицы?

Aquarius
Поставьте нормальную IDE с автодополнением, чтобы когда вы ввели "new field" вам она показывала все доступные классы начинающиеся на field

Потерял уже прорву времени на поиски по исходникам – подсказки там, увы, тоже не нашёл...

Aquarius
Опять же, в любой нормальной IDE вы бы могли сделать Ctrl+клик по слову fieldDate и перейти к определению этого класса, тут же поняв где он находится и какие в этой же папке есть аналогичные классы

IDE множество: NetBeans, phpStorm, PhpED, Eclipse и куча других.
Notepad++ и подобное при серьезной разработке годится только чтобы по-быстрому поправить пару строчек в точно известном месте.

Хорошая IDE с хорошим автокомплитом избавит вас от огромного множества непоняток и вопросов
#14 22 октября 2014 в 19:32
Fuze, r2, я обнаружил в классе fieldDate две функции, где речь идёт о времени, но не очень понятно – можно ли этим воспользоваться?
  1.  
  2. public function getOptions(){
  3. return array(
  4. new fieldCheckbox('show_time', array(
  5. 'title' => LANG_PARSER_DATE_SHOW_TIME,
  6. 'default' => false
  7. ...
  8. public function store($value, $is_submitted, $old_value=null){
  9. if ($value){
  10. if (is_array($value)){
  11. $value = "{$value['date']} {$value['hour']}:{$value['min']}";
  12. return date('Y-m-d H:i', strtotime($value));
  13. ...
Написать класс "по аналогии", думаю, для меня задача сложноватая, по меньшей мере, придётся убить на неё неоправданно большое время, чтобы разобраться и добиться результата.
Но есть ещё один путь, на случай, если штатный класс даты всё же не умеет принимать от пользователя время: можно ввести два fieldNumber (для часов и минут, соответственно). Останется лишь разобраться – как поправить шаблон, который сейчас все поля рисует друг под другом?
Спасибо за советы!
#15 22 октября 2014 в 23:03

Но попытка то же самое проделать с полем "время" ни к чему не привела. Я пробовал варианты типа "fieldTime(..." в нескольких вариациях...

Aquarius

ВЫ видимо желаете дополнить поле Дата полем выбора часового времени — или создать отдельное поле " время."
Это решение заложено в поле fieldAge — при условии что Вы укажете в конфигурационных настройках
Формат вывода даты d.m.Y.h.m
Поле Age выводит ( при редактировании ) сохраненную ( в базе данных дату в формате d.m.Y.h.m) На момент создания-выбора даты поля date :Год-месяц-число-день-час-минуты.

Но!
Возможность выбора времени, при редактировании форм, должна поддерживаться еще и разработчиком jQuery ui datepicker.
Поменяйте в форме, или создайте поле типа fieldAge,
Видите что есть только выбор даты, и нет выбора установки времени.
В настройках конфигурации есть пункт Установка формата js.
Именно этот формат будет отдаваться значению поля при вызове jQuery ui datepicker.
Но в документации к datepicker.formatDate( format, date, settings ) нет формата часы-минуты.
Виджет jQuery ui datepicker принимает формат
  1. $('#LastActivity').datepicker({showStatus: true, showOn: 'both', dateFormat:'dd.mm.yy'});
Сам виджет jQuery ui datepicker не имеет обработчиков "время".
Для выбора "времени" после выбора "даты" используют различные аддоны типаAdding a Timepicker to jQuery UI Datepicker

на странице по ссылке " Download Timepicker Addon "


Fuze, r2, я обнаружил в классе fieldDate две функции, где речь идёт о времени, но не очень понятно – можно ли этим воспользоваться?

Aquarius
1-
  1. public function getOptions(){
  2. return array(
  3. new fieldCheckbox('show_time', array(
  4. 'title' => LANG_PARSER_DATE_SHOW_TIME,
  5. 'default' => false
  6. )),
  7. );
  8. }
При создании типа контента и поля "Дата" — функция предлагает возврат значения по умолчанию ...
тоесть show_time 'default' => false — не показывать время! Или show_time 'default' => true — показывать время!
Тоесть при создании любого контента в таблицу будет записана дата в формате d.m.Y.h.m
А флаг " show_time " обрабатывается только при показе контента в шаблоне templates/*/assets/fields/date.tpl.php
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.