ormEditForm

На печать

Класс позволяет автоматически создавать формы редактирования на основе ORM-объектов.

Описание методов

__construct()

Конструктор класса.

replaceField()

Заменяет отображение стандартного поля на указанный html.

addField()

Добавляет новое поле на указанную вкладку, в указанную позицию.

addPadding()

Добавляем отступ между полями.

newTabs()

Добавляет новую вкладку в форму.

addInTopTabs()

Добавляет html в начало указанной вкладки.

addInBottomTabs()

Добавляет html в конец указанной вкладки.

attachJavaScript()

Прикрепляет к форме указанный JavaScript-файл.

setORMList()

Создает список ORM-классов для быстрой смены типа добавляемого объекта.

getHTML()

Генерация формы редактирования объекта.


Примеры



Создание формы добавления нового пользователя
// Создаем образ нового объекта
$obj = new ormObject('user');

// Создаем форму на основе этого образа
$form = new ormEditForm($obj, 'user_upd');  

// Выводим на страницу
return $form->getHTML();


Создание форм для добавления и редактирования новостей

Приведен пример для вымышленного модуля «Новости».

Ниже представлено содержимое файла обработчика «/modules/news/__news.php», в котором реализовано две формы. Форма добавления должна быть доступна по ссылке «/mpanel/news/news_add/65», последний параметр – ID родительского раздела. Форма редактирования должна быть доступна по ссылке «/mpanel/news/news_add/344», последний параметр – ID редактируемой новости.

Отсылка данных формы происходит на страницы «/mpanel/news/news_proc_add» или «/mpanel/news/news_proc_add» в зависимости от режима формы. Для всех обработчиков должны быть созданы права доступа.

В системе должен быть создан класс данных «news».

<?

class __news {

	// Обработчик формы добавления новости
	public function add() {
		return $this->upd();
 	}

 	// Обработчик формы изменения новости
	public function upd() {
        
        if (system::action() == 'upd') {

            // Изменение страницы
            $obj = ormPages::get(system::url(2));

			$right = 'news_proc_upd';

		} else if (system::action() == 'add') {

            // Добавление страницы               
 
			$obj = new ormPage();
			$obj->setParent(system::url(2));
            $obj->setClass('news');

            $right = 'news_proc_add';
		}

		page::assign('right', $right);

        // Если произошли ошибки, перенаправляем на главную страницу модуля
		if (!is_a($obj, 'ormPage') || $obj->issetErrors())
			system::redirect('/news');

        // Устанавливаем кнопки для формы
        ui::setCancelButton('/news');        
		ui::newButton(lang::get('BTN_SAVE'), "javascript:sendForm('save');");
	    ui::newButton(lang::get('BTN_APPLY'), "javascript:sendForm('apply');");    

        // Создаем форму и выводим ее на страницу
        $form = new ormEditForm($obj, $right);
        return $form->getHTML();
 	}  

	// Обработчик добавления новости
	public function proc_add() {
		
 	}

 	// Обработчик изменения новости
	public function proc_upd() {
		
	}	
}

?>


Что-то не так? Напиши, учтем!