Hej
Zapis mojej sekcji odbywa się przez pobranie danych z formularza, które następnie są przekazywane do metody save() mappera (argument metody). Jednak sekcja również składa się z innych właściwości, których nie ma w formularzu, a które chcę dopisać do obiektu $section przed jego zapisem w db.
Przykładem takiej właściwości jest zmienna $author_id:
$author_id = $_SESSION['Zend_Auth']['storage'][0]->user_id;
Metoda save():
public function save(Application_Model_Section $section) {
$data = array(
'section_author_id' => $section->getAuthorId(), // nie mamy author_id!!
'section_fullname' => $section->getFullname(),
'section_color' => $section->getColor(),
'section_visibility' => $section->getVisibility(),
'section_removed' => $section->getRemoved(),
);
if (null === ($id = $section->getId())) {
unset($data['section_id']);
$this->getDbTable()->insert($data);
} else {
$this->getDbTable()->update($data, array('section_id = ?' => $id));
}
}
Moje pytanie brzmi następująco: W jaki sposób określić dodatkową właściwość przy maksymalnym zachowaniu hermetyzacji? Moje propozycje:
- Stworzenie w formularzu pożądanej wartości 'hidden', tym samym ta właściwość będzie już w obiekcie.
- W metodzie save, zamiast $section->getAuthorId() użyć $_SESSION['Zend_Auth']['storage'][0]->user_id (wydaje mi się, że tu brak hermetyzacji).
- W kontrolerze pobrać tę wartość z sesji i przed wywołaniem funkcji save() dać $section->setAuthorId(...).
Pozdrawiam