У меня есть отдельные классы db_table для книг , book_sections и пользователей (конечные пользователи системы).в таблица книг имеет столбцы для book_title , section_id (book_section), data_entered_user_id (кто ввел информацию о книге),
перейдите по этому URL, чтобы увидеть изображение (я не могу публиковать изображения, потому что я новичок в stackoverflow) img685.imageshack.us/img685/9978/70932283.png
в бэкэнд системы я добавил форму для редактирования существующей книги (получить идентификатор книги из параметра GET и заполнить соответствующие данные в форме).Форма имеет элементы для book_title , book_section и data_entered_user .
, чтобы получить захватывающие данные книги для "редактирования формы книги" I присоединитьсяbook_section и пользовательские таблицы с таблицей book для получения book_section_name и username (of data_entered_user: только для чтения - отображение на боковой панели)
перейдите по этому URL, чтобы увидеть изображение (I 'я не могу публиковать изображения, потому что я новичок в stackoverflow) img155.imageshack.us/img155/2947/66239915.jpg
В классе App_Model_Book распространяется Zend_Db_Table_Abstract
public function getBookData($id){
$select = $this->select();
$select->setIntegrityCheck(false);
$select->from('book', array('id','section_id','data_entered_user_id',...));
$select->joinInner('section','book.section_id = section.id',array('section_name' =>'section.name' ));
$select->joinInner(array('date_entered_user' => 'user'),'book.date_entered_user_id = date_entered_user.id',array('date_entered_user_name' =>'date_entered_user.user_name' ));
$select->where("book.id = ?",$id);
return $this->fetchRow($select);
}
public function updateBookData($id,$title,$section_id,...)
{
$existingRow = $this->fetchRow($this->select()->where('id=?',$id));
$existingRow->title = $title;
$existingRow->section_id = $section_id;
//....
$existingRow->save();
}
В Admin_BookController -> editAction ()
$editForm = new Admin_Form_EditBook();
$id = $this->_getParam('id', false);
$bookTable = new App_Model_Book();
$book_data = $bookTable ->getBookData($id);
//set values on form to print on form when edit book
$editForm->book_title->setValue($book_data->title);
$editForm->book_section->setValue($book_data->section_name);
//........
//If form data valid
if($this->getRequest()->isPost() && $editForm->isValid($_POST)){
$bookTable = new App_Model_Book();
$bookTable ->updateBookData(
$id,
//get data from submitted form
$editForm->getValue('title'),
//....
);
при редактировании существующей книги
- получить данные из метода getBookData () класса App_Model_Book
- Если данные формы действительны после отправки отредактированных данных, сохраните данные с помощью метода updateBookData () в классе App_Model_Book
, но я увидел, что если я создал пользовательский Db_Table_Row(расширяет Zend_Db_Table_Row)ss для таблицы книг с book_section_name и data_entered_user_name Я могу использовать его для получения существующих данных книги и сохранения после редактирования данных книги без создания нового класса Book (db_table) и без вызова updateBookData ()чтобы сохранить обновленные данные . Но я не знаю, какой код я должен написать в пользовательском классе Db_Table_Row (расширяет Zend_Db_Table_Row) .
Я думаю, вы понимаете мою проблемув простом
как написать пользовательский класс db_table_row для создания пользовательской строки с формой данных 2 соединенных таблицы для перкулярного класса db_table?
Я новичок в Zend Framewok и StackOverflow.прости меня, если ты перепутал мой первый вопрос.
Еще раз спасибо.