我开始使用Zend Framework 1.12.7开展学生项目。我用一个addAction和一个带有各种文本字段和两个下拉菜单的表单来编写用户类,我希望用数据库中的对象(组和角色)填充这些菜单。我们的想法是从下拉列表中选择一个对象(由其名称表示),并将相应对象的id保存到数据库中。
我已经发现,Zend Framework正在使用关联数组,我已经能够从下拉菜单中选择名称了。但是,仍然没有任何东西保存到数据库中。
我为您提供了角色对象的控制器,表单和模型代码:
控制器:
public function addAction()
{
$request = $this->getRequest();
$rollen = new Application_Model_Rolle();
$mapper = new Application_Model_RolleMapper();
$rollen = $mapper->fetchAll();
$options;
foreach ($rollen as $rolle) {
$key = (string) $rolle->bezeichnung;
$options[] = array($key => $rolle->bezeichnung );
$values[] = array($key => $rolle);
}
$form = new Application_Form_Benutzer();
$form->getElement('rolle')->setMultiOptions($options);
$form->getElement('rolle')->setValues($values);
if ($this->getRequest()->isPost()) {
if ($form->isValid($request->getPost())) {
$benutzerdaten = new Application_Model_Benutzer($form->getValues());
die($form->getValue('rolle'));
$mapper = new Application_Model_BenutzerMapper();
$mapper->save($benutzerdaten);
return $this->_helper->redirector('index');
}
}
形式:
$this->addElement('select', 'rolle', array(
'label' => 'Rolle:',
'required' => false,
));
型号:
public function fetchAll()
{
$resultSet = $this->getDbTable()->fetchAll();
$entries = array();
foreach ($resultSet as $row) {
$entry = new Application_Model_Benutzer();
$entry->setb_Id($row->b_id)
->setNachname($row->nachname)
->setVorname($row->vorname)
->setBenutzername($row->benutzername)
->setEmail($row->email)
->setTelefon($row->telefon)
->setPasswort($row->passwort);
$gruppeID = $row->g_id;
$gruppe = new Application_Model_Gruppe();
$mapper = new Application_Model_GruppeMapper();
$gruppe = $mapper->find($gruppeID, $gruppe);
$rolleID = $row->r_id;
$rolle = new Application_Model_Rolle();
$mapper = new Application_Model_RolleMapper();
$rolle = $mapper->find($rolleID, $rolle);
$entry->setRolle($rolle);
$entry->setGruppe($gruppe);
$entries[] = $entry;
}
return $entries;
}
那么如何访问所选对象并将其ID保存到数据库?
非常感谢你的帮助!
干杯!
马丁