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:

  1. Stworzenie w formularzu pożądanej wartości 'hidden', tym samym ta właściwość będzie już w obiekcie.
  2. W metodzie save, zamiast $section->getAuthorId() użyć $_SESSION['Zend_Auth']['storage'][0]->user_id (wydaje mi się, że tu brak hermetyzacji).
  3. W kontrolerze pobrać tę wartość z sesji i przed wywołaniem funkcji save() dać $section->setAuthorId(...).

Pozdrawiam