Регистрация Логин – имя которое Вы будете использовать для

advertisement
1
Регистрация
Логин – имя которое Вы будете использовать для входа в админку.
Хост – IP хостинга к базе данных (например 91.200.41.106)
Имя базы – имя базы данных.
Пользователь – пользователь для работы с базой данных.
Пароль – пароль доступа пользователя к базе данных.
Порт – порт к базе данных (например 3306).
После регистрации и авторизации на сайте, Вы попадаете в административную часть для
работы с Вашей базой данных.
Для начала работы с таблицами Вашей базы данных, необходимо сгенерировать модели
для их работы, а так же по моделям описать схему, по которой будут строится контроллеры,
шаблоны и формы для работы. Что бы проделать все эти этапы , необходимо зайти в пункт меню
Генерация:
И в верхнем меню нажать Генерировать модели:
2
После этого модели и стандартные схемы (схемы спроектированные по базе данных),
будут созданы и Вы увидите примерно следующую страничку в вкладке Генерация:
Можно просмотреть, а также изменить, схемы, которые были созданы при нажатии
кнопки Редактировать:
Форма редактирования схемы будет иметь вид:
3
На этой форме можно изменять схему Вашего объекта. Для того чтобы при сохранение
Файл был сгенерирован, необходимо поставить галочку напротив Сгенерировать файл и сохранить
схему.
Для Генерации файлов предоставляющих работу с Вашим объектом необходимо во
вкладке Генерация проставить галочки напротив тех объектов, которые вы хотите сгенерировать и
внизу формы нажать кнопку Ок:
После этого Вы сможете удаленно работать с данными Вашей базы данных, используя наш
сервис. Для вступления изменений в силу необходимо перезагрузить страницу. После
перезагрузки в списке меню, в папке Объекты, добавятся элементы, которые Вы сгенерировали:
4
При заходе в любой с пунктов меню, мы заходим на главную страницу объекта, где
отображается полный список всех записей таблицы:
В данном окне можно изменять количество выводимых объектов на страницу:
Осуществлять переход по страницам:
Можно фильтровать таблицу по любому с полей, для этого необходимо нажать на
заголовок любой с колонки таблицы.
Так же присутствует поиск:
При нажатии на него, выпадает окно:
Где можно указать практически любое условие для поиска необходимой записи.
В каждой строке таблицы мы имеем панель управления записью:
Первый элемент – редактирование записи. При нажатии на него вы попадаете на форму
редактирования данной записи. Второй – удаление (объект удаляется и вы возвращаетесь на
5
страницу со списком записей). Третий – создание записи с такими же параметрами. При нажатии
вы попадаете на редактирование созданной записи.
Для множественного удаления записей, необходимо выделить галочками в последней
колонки, записи, которые хотим удалить и нажать кнопку удалить в панели управления таблицы:
В верхнем меню Вы можете обновить фрейм со списком записей или же добавить новую
запись.
Перейдем к редактированию записи:
Мы видим перед собой форму созданную автоматически, без каких либо настроек. В
верхней панели управления мы можем вернуться к предыдущей страницы (список записей),
сохранить изменения, обновить страницу, а так же удалить объект.
Система имеет большое количество полей, которые предоставляет удобное управление
Вашими данными, но для этого необходимо правильно описать поля в схеме объекта. Поэтому
перейдем к правилам описания схемы объекта.
6
Как видим описание нашей схемы лежит в массиве $arr = array(). Опишем детальней все
возможные поля.
'name' => 'Song',
название объекта (латинские буквы)
'submit' => 'Save',
имя кнопки при редактирование/добавление
'tableName' => 'TablenameAlbum',
имя таблицы всех объектов (по умолч. имя модели)
'model' => 'Newadmin_Model_Song',
модель для работы с объектом
Модель для работы с объектом строится по такому правилу – с начала идет приставка
Newadmin_Model_, а потом имя таблицы в Вашей базе данных для данного объекта. Например:
users - Newadmin_Model_Users
users_info - 'Newadmin_Model_UsersInfo
users_photos_comments - Newadmin_Model_UsersPhotosComments
'key' => 'song_id',
ключевое поле (PRIMARY KEY)
Описание пункта меню, для данного объекта имеет следующий вид:
'menu' => array(
'visibly' => true,
'name' => 'Песни',
описание пункта меню
видимость
имя пункта меню
),
Так же можно добавить подключение каких-то своих скриптов:
'js' => '<script></script>',
'css' => '<script></script>',
Можно указать какие поля показывать в главной таблице объектов с их списком, для этого
необходимо использовать такую структуру:
'tableColumn' => array(
описание полей таблицы
'0' => array(
'COLUMN_NAME' => 'name',
имя поля
),
'1' => array(
'COLUMN_NAME' => 'description',
),
)
Поддерживается разделение на табы в формах редактирования и добавление – это присутствует
для того что бы отделать логически не связанные элементы объекта:
7
Для этого в схеме необходимо описать массив со списком табов:
'tabs' => array(
описание табов
'0' => array(
'type' => 'action',
таб типа екшен
'name' => 'tab3',
имя таба
'label' => 'Tab3',
название
'module' => 'newadmin',
модуль
'controller' => 'index',
'action' => 'some',
'params' => "array('key1' => 'value1')" параметры для екшена
),
'1' => array(
'type' => 'form',
тип форма
'name' => 'tab1',
имя таба
'label' => 'Tab1',
название
),
'2' => array(
'type' => 'form',
'name' => 'tab2',
'label' => 'Tab2',
),
),
Существует 2 типа табов:
- форма – таб в который можно добавлять элементы формы (полей) нашего объекта;
- екшен – в описание этого таба больше параметров, он служит для вызова определенного
действия в теле таба формы.
8
Для того что бы указать что определенный элемент будет принадлежать какому-то табу,
необходимо в описание поля добавить параметр
'tab' => 'tab1',
где 'tab1' – имя таба, описанного в списке табов.
В большинстве случаев в проектах используется связь через промежуточную таблицу, для этой
ситуации наша система имеет специальный элемент. Для того чтобы описать таблицы которые
связаны через промежуточную таблицу, и Вы хотите чтобы они редактировались именно в данном
объекте, используется элемент связь. Например: есть 3 объекта песни, артисты и связь между
ними создана через промежуточную таблицу, то в данном случае целесообразно редактировать
эту связь в объекте песни. Описание связи имеет следующий вид:
'relation' => array(
массив связей
'0' => array(
'name' => 'artistalbum',
имя связи
'tableName' => 'TableNameArtistAlbum',
название таблицы (по умолч. имя)
'modelLink' => array(
модель с которой соединяется
'model' => 'Newadmin_Model_Album',
модель
'key' => 'id',
ключевое поле
'name' => 'name',
поле с именем
'fields' => 'id,name,description'
поля в таблице
),
'modelConect' => array(
связная модель
'model' => 'Newadmin_Model_Artistalbum', модель связной таблицы
'key' => 'artist_id',
ключевое поле в таблице
'conn_key' => 'album_id'
связное поле в таблице
),
),
'1' => array(
'name' => 'artistsong',
'modelLink' => array(
'model' => 'Newadmin_Model_Song',
'key' => 'song_id',
'name' => 'name',
'fields' => 'song_id,name'
),
'modelConect' => array(
'model' => 'Newadmin_Model_Artistsong',
9
'key' => 'artist_id',
'conn_key' => 'song_id'
),
),
),
Сам элемент имеет вид (например при редактирование новости, связь через промежуточную
таблицу с тэгами новости):
Для того что бы удалить не нужные записи, мы используем тот же инструмент, что и для обычного
списка записей. Для того что бы добавить новый элемент не обходимо нажать Добавить в нижней
панели управления:
После чего на экране увидим:
10
Это таблица со списком всех тэгов, для добавление необходимо выделить необходимые записи и
нажать кнопку Добавить, после чего мы получим сообщение о успешном добавление. Данная
таблице так же имеет поиск по записям, пейджинг и выбор количества выводимых объектов на
страницу.
Перейдем к описанию полей таблицы. Все поля таблицы описываются в массиве 'metadata'=>
array();
Типы существующих элементов:
'text' => 'Textarea',
текстовое поле
'password' => 'Password',
пароль
'int' => 'Text',
целое число
'varchar' => 'Text',
поле для ввода
'tinyint' => 'Checkbox',
чекбокс
'date' => 'Text',
дата
'datepicker' => 'Text',
поле выбора даты
'float' => 'Text',
'mediumint' => 'Text',
'select' => 'Select',
'radio' => 'Radio',
'multicheckbox' => 'MultiCheckbox',
'multiselect' => 'Multiselect',
'edittext' => 'Textarea',
поле текстовый редактор
'relation' => 'Text',
поле связи с другой таблицы
'file' => 'File',
Некоторые поля которые схожи по своему описанию задаются одинаково, поэтому опишем
некоторые с полей:
1. Текстовое поле
1 => array(
'COLUMN_NAME' => 'name',
имя элемента
'DATA_TYPE' => 'text',
тип элемента
'label' => 'Name',
подпись поля
'decorators' => array('rows' => '4', 'cols' => '3'),
декораторы
'attr' => array(
атрибуты
array(
'name' => 'maxlength',
'params' => array('80')
)
11
),
'jsvalidators' => array(
яваскрипт валидаторы
'maxlength' => 5,
'minlength' => 4,
'nowhitespace' => true,
'alphanumeric' => true
),
),
Как Вы видите через описание поля, можно указать почти все возможные атрибуты к
полям. Массив атрибуты имеет синтаксис:
array(
'name' => 'maxlength',
имя атрибута
'params' => array('80')
параметры в виде списка в
массиве (например: array(‘80’, false) )
)
2. Varchar
2 => array(
'COLUMN_NAME' => 'description',
'DATA_TYPE' => 'varchar',
'label' => 'DESC',
'required' => 'true',
'attr' => array(
признак обязательного поля
атрибуты
array(
'name' => 'maxlength',
'params' => array('80')
)
),
'jsvalidators' => array(
'maxlength' => 5,
'minlength' => 2,
'nowhitespace' => true,
'alphanumeric' => true
),
),
Как видим описание мало чем отличается от обычного текстового поля.
12
3. HTML WYSIWYG редактор
2 => array(
'COLUMN_NAME' => 'description',
имя поля
'DATA_TYPE' => 'edittext',
тип поля
'tab' => 'tab1',
принадлежность табу
'label' => 'DESC',
подпись элемента
'required' => 'true',
признак обязательного поля
'hidden' => 'true',
признак невидимости
'attr' => array(
атрибуты
array(
'name' => 'maxlength',
название атрибута
'params' => array('280')
значения атрибута
),
атрибут для невидимости
array(
'name' => 'disabled',
название атрибута
'params' => array('disabled')
значения атрибута
)
),
),
Описанное поле будет иметь вид:
4. Дата
2 => array(
'COLUMN_NAME' => 'date',
'DATA_TYPE' => 'date',
'required' => 'true',
13
'format' => 'dd.MM.yyyyy'
формат даты
),
5. Выбор даты
0 => array(
'COLUMN_NAME' => 'n_date',
'DATA_TYPE' => 'datepicker',
'label' => 'Дата',
'format' => 'yy-mm-dd 00:00:00',
'tab' => 'tab1',
'editable' => false,
'attr' => array(
array(
'name' => 'maxlength',
'params' => array('25')
)
),
),
Получим такой элемент:
6. Checkbox
1 => array(
'COLUMN_NAME' => 'n_show',
'DATA_TYPE' => 'tinyint',
'label' => 'Показывать',
'editable' => false,
'tab' => 'tab1',
'required' => 'true',
14
'attr' => array(
array(
'name' => 'maxlength',
'params' => array('1')
)
),
),
Элемент будет иметь вид:
7. Выбор со списка
9 => array(
поле радиобатон с 3 значениями
вместо значений можно передавать функцию, которая будет возвращать массив значений
'COLUMN_NAME' => 'radio3',
'DATA_TYPE' => 'radio',
'required' => 'true',
'values' => array(
значения радио
0 => array(
"id" => "",
"value" => "1"
),
1 => array(
"id" => "",
"value" => "2"
),
2 => array(
"id" => "",
"value" => "3"
)
)
),
Вместо значений можно передавать функцию, которая будет возвращать массив значений,
например:
'values' => Newadmin_Model_News::getCategories()
Для этого существует специальная функция "Newadmin_Model_CmsNaBase ::
getMultioptions( 'Newadmin_Model_Song', 'song_id', 'name')",
15
получение значений елемента:
1 - с какой таблицы
2 - key
3 - value
8. Выбор со списка (Select)
24 => array(
'COLUMN_NAME' => 'n_spec_section_type',
'DATA_TYPE' => 'select',
'label' => 'n_spec_section_type',
'editable' => false,
'required' => 'true',
'tab' => 'tab1',
'attr' => array(
array(
'name' => 'maxlength',
'params' => array('8')
)
),
'values' => array(
0 => array(
'id' => 'general',
'value' => 'general',
),
1 => array(
'id' => 'tetrapak',
'value' => 'tetrapak',
),
2 => array(
'id' => 'organic',
'value' => 'organic',
),
),
9. Поле выбора с другой таблицы. Часто у нас возникает ситуация, когда в таблице имеется
поле, которое отвечает за элемент с другой таблицы. Например у нас есть таблица news и
16
в ней есть поле тип новости (n_tn_id) , которое берется с таблицы типы новостей, для того
чтобы облегчить выбор этого параметра, мы используем специальное поле:
9 => array(
'COLUMN_NAME' => 'n_tn_id',
'DATA_TYPE' => 'relation',
'label' => 'n_tn_id',
'tab' => 'tab1',
'editable' => false,
'attr' => array(
array(
'name' => 'maxlength',
'params' => array('1')
)
),
'link' => array(
'model' => 'Newadmin_Model_News',
модель данного объекта
'key' => 'tn_id',
'connmodel' => 'Newadmin_Model_TypeNews', модель таблицы с которой
соединяемся
'conn_key' => 'tn_id',
'fields' => 'tn_id,tn_name_ru'
ключевое поле с соединяемой таблицы
поля с соединяемой таблицы
),
),
После описания получим такое поле:
При нажатии на стрелку с лева от поля, получим:
17
Тут можно выбрать тип материала, выделить его галочкой и нажать Добавить в нижней
панели управления.
10. MultyCheckbox
3 => array(
'COLUMN_NAME' => 'test',
'DATA_TYPE' => 'multicheckbox',
'label' => 'TEST',
'values' => "Newadmin_Model_CmsNaBase::getMultioptions
('Newadmin_Model_Song','song_id','name')",
),
Так же значения можно задавать массивом:
'values' => array(
значения радио
0 => array(
"id" => "1",
"value" => "1"
),
1 => array(
"id" => "2",
"value" => "2"
),
18
2 => array(
"id" => "3",
"value" => "3"
)
)
Мы получим поле для выбора одного из значений.
11. MultySelect
5 => array(
'COLUMN_NAME' => 'test',
'DATA_TYPE' => 'multiselect',
'label' => 'TEST',
'values' => "Newadmin_Model_CmsNaBase::getMultioptions
('Newadmin_Model_Song','song_id','name')",
),
Поле идентично предыдущему.
12. Поле (multycheckbox) для выбора с другой таблицей с возможностью ее наполнения.
Иногда у нас возникает ситуация, когда у нас есть поле, которое выбирается с другой
таблицы и для удобства наш сервис добавляет возможность наполнять вспомогательную
таблицу:
3 => array(
'COLUMN_NAME' => 'test',
'DATA_TYPE' => 'multicheckbox',
'label' => 'TEST',
'addValues' => 'song',
'manual' => '1',
признак использования значений с другой таблицы
(справочник)
'link' => '/newadmin/song/add',
ссылка на добавление элементов в справочник
(обязательное, если заполнено предыдущее поле)
'values' => "Newadmin_Model_CmsNaBase::getMultioptions('Newadmin_Model_Song',
'song_id','name')",
получение значений елемента:
1 - с какой таблицы
2 - key
3 - value
'relation' => array(
19
'name' => 'albumsong',
имя связи
'modelLink' => array(
таблица с которой связано
'model' => 'Newadmin_Model_Song', имя модели
'key' => 'song_id',
'name' => 'name',
ключевое поле
значение
),
'modelConect' => array(
промежуточная таблица
'model' => 'Newadmin_Model_Albumsong',
'key' => 'album_id',
модель
имя поля в промежуточной таблицы для
значений данного поля
'conn_key' => 'song_id'
имя поля в пром. табл. для значений
выбранных в поле
),
),
),
При описание данного поля, оно будет иметь вид:
При нажатии на добавление значений, мы получим выпадающие окно с формой
добавление значения в таблицу-справочник, после добавление необходимо закрыть окно
и нажать кнопку обновления списка.
13. Поле (multyselect) для выбора с другой таблицей с возможностью ее наполнения.
4 => array(
'COLUMN_NAME' => 'reltest',
'DATA_TYPE' => 'multiselect',
20
'label' => 'TEST',
'manual' => '1',
'values' => "Newadmin_Model_CmsNaBase :: getMultioptions
('Newadmin_Model_Song' ,'song_id', 'name')",
'relation' => array(
'name' => 'albumsong',
'modelLink' => array(
'model' => 'Newadmin_Model_Song',
'key' => 'song_id',
'name' => 'name',
),
'modelConect' => array(
'model' => 'Newadmin_Model_Albumsong',
'key' => 'song_id',
'conn_key' => 'album_id'
),
),
),
Описание похоже на предыдущее поле. В итоге получим:
Поведение так же аналогично предыдущему объекту.
14. Поле (select) для выбора с другой таблицей с возможностью ее наполнения.
3 => array(
'COLUMN_NAME' => 'song_id',
'DATA_TYPE' => 'select',
'label' => 'SONG',
'addValues' => 'song',
'manual' => '1',
'editable' => true,
'link' => '/newadmin/song/add',
'values'
=>
"Newadmin_Model_CmsNaBase::getMultioptions('Newadmin_Model_Song','song_id','name')",
21
'relation' => array(
'name' => 'albumsong',
'modelLink' => array(
'model' => 'Newadmin_Model_Song',
'key' => 'song_id',
'name' => 'name',
),
),
),
Поле будет иметь вид:
15. Пользовательский select.
5 => array(
'COLUMN_NAME' => 'sel',
'DATA_TYPE' => 'userselect',
'label' => 'TEST',
'description' => 'dfdsfsdfsdf',
'relation' => array(
'name' => 'albumsong',
'modelLink' => array(
'model' => 'Newadmin_Model_Song',
'key' => 'song_id',
'name' => 'name',
),
'modelConect' => array(
'model' => 'Newadmin_Model_Albumsong',
'key' => 'song_id',
'conn_key' => 'album_id'
),
),
),
Описание так же схоже к предыдущему, но после описания этого поля мы получаем:
22
В правом поле мы видим выбранные объекты, для того чтобы выбирать объекты
необходимо воспользоваться кнопками управления (стрелками).
16. Файл
4 => array(
'COLUMN_NAME' => 'name',
'DATA_TYPE' => 'file',
'tab' => 'tab1',
поле файл
принадлежность табу
'label' => 'FILE',
'newname' => "date()",
'destination' => '',
новое имя файла
путь к файлу
'required' => 'true',
'validators' => array(
0 => array(
'name' => 'Size',
'params' => array("false", "10240000")
),
1 => array(
'name' => 'Extension',
'params' => array("false", "'jpg,png,gif'")
),
2 => array(
пользовательский валидатор
'name' => 'new MyValid_NumericBetween()',
'params' => array("true"),
'uservalidator' => true
валидатора
),
),
признак пользовательского
23
превью для файла
'preview' => array(
'0' => array(
'width' => '100',
'height' => '100'
),
),
),
Это поле одно из самых сложных, поэтому требует правок в коде, для работы под
определённый объект.
При изменение схем, старые схемы сохраняются и к ним можно откатиться с помощью
элемента в Пункте меню Генерация – Редактирование объекта:
Тут можно получить схему за определенную дату и откатиться к ней и перегенерировать
все файлы для работы с Вашим объектом. При генерации файлы, который были
сгенерированы по старой схеме так же сохраняются.
На этом мы закончим описание схем таблиц и перейдем к администрированию ресурса
под Вашу базу данных (пункт меню Администрирование).
1. Ресурсы. В этой вкладке содержаться все ресурсы (действия) для работы с Вашей базой
данных. Их можно добавлять, редактировать и удалять (не рекомендуется). При
удаление ресурс может работать не корректно. При правильной генерации объектов
Вашей базы ресурсы создаются автоматически и их работа корректна.
24
2. Роли. Этот пункт отвечает за роли доступа к нашему ресурсу по Вашей базе данных.
Для того чтобы запретить какой-то роле доступ к определенным ресурсам необходим
зайти в редактирование роли и в добавить необходимые ресурсы в таблицу Правила:
3. Пользователи. Этот пункт меню отвечает за редактирование, добавление и удаление
пользователей, которые могут иметь доступ к Вашей базе данных через наш ресурс.
4. Меню. Меню отвечает за формирование структуры меню, а так же его содержимого.
Download