如何更新主注册表和辅助multicheckbox填充表?
|
我有一个包含不同输入字段的注册表单,其中一个是多个复选框,以便用户可以决定他想从哪个国家接收信息。最后一个是这样创建的:
$pais = $this->createElement(\'multiCheckbox\', \'pais\');
$pais->setLabel(\'Pais\\es: \');
$pais->addMultioption(\'1\', \'Argentina\');
$pais->addMultioption(\'2\', \'Espa?a\');
$pais->addMultioption(\'3\', \'Brasil\');
$pais->addMultioption(\'4\', \'USA\');
$pais->addMultioption(\'5\', \'Italia\');
$this->addElement($pais);
在我的UserController中,我有以下操作来更新表\'users \':
public function createAction()
{
$this->view->pageTitle = \'Create User\';
require_once APPLICATION_PATH . \'/models/Users.php\';
$userForm = new Form_User();
if ($this->_request->isPost()) {
if ($userForm->isValid($_POST)) {
$userModel = new Model_User();
$userMode->createUser(
$userForm->getValue(\'email\'),
$userForm->getValue(\'password\'),
$userForm->getValue(\'url\'),
$userForm->getValue(\'responsable\'),
$userForm->getValue(\'role\')
);
return $this->_forward(\'list\');
}
}
$userForm->setAction(\'/user/create\');
$this->view->form = $userForm;
}
当然,哪个现在不考虑在multicheckbox中填充$ pais变量,也不在这里或模型中:
class Model_User extends Zend_Db_Table_Abstract
{
protected $_name = \'users\';
public function createUser($email, $password, $url, $responsable, $role)
{
// create a new row
$rowUser = $this->createRow();
if($rowUser) {
// update the row values
$rowUser->email = $email;
$rowUser->password = md5($password);
$rowUser->url = $url;
$rowUser->responsable = $responsable;
$rowUser->role = $role;
$rowUser->save();
//return the new user
return $rowUser;
} else {
throw new Zend_Exception(\"El usuario no se ha podido crear!\");
}
}
}
我还有一个\'pais \'表,其中包含5个不同的国家,并且我正在为\'users_has_pais \'创建一个单独的模型,该模型是我为此在工作台中创建的表...但是我目前所做的工作没有任何结果。有人可以指出我正确的路径以在我更新“ users”表的同时更新“ users_has_pais”吗?
非常感谢任何对此有很好建议的人。
编辑:这是数据库模型,以防有人需要它弄清楚我在说什么
编辑2:
public function createAction()
{
$this->view->pageTitle = \'Create User\';
require_once APPLICATION_PATH . \'/models/Users.php\';
$userForm = new Form_User();
if ($this->_request->isPost()) {
if ($userForm->isValid($_POST)) {
$userModel = new Model_User();
$user = $userModel->createUser(
$userForm->getValue(\'email\'),
$userForm->getValue(\'password\'),
$userForm->getValue(\'url\'),
$userForm->getValue(\'responsable\'),
$userForm->getValue(\'role\')
);
$paises = $this->getRequest()->getParam(\'pais\');
$userId = intval($user[\'id\']);
require_once APPLICATION_PATH . \'/models/UserHasPais.php\';
$paisesModel = new Model_UsersHasPais();
$paisesModel->updateUserPais($userId, $paises);
return $this->_forward(\'index\');
}
}
和users_has_pais模型:
class Model_UsersHasPais extends Zend_Db_Table_Abstract
{
受保护的$ _name = \'users_has_pais \';
public function updateUserPais($id, array $paises)
{
$row = ($r = $this->fetchRow(array(\'users_id = ?\' => $id))) ? $r : $this->createRow();
foreach($paises as $pais){
$row->users_id = $id;
$row->pais_id = $pais;
$row->save();
}
}
}
没有找到相关结果
已邀请:
1 个回复
杭难插
如果需要,您也可以将所有这些都放入事务中。 希望这会有所帮助,或者至少您会指出正确的方向。