gpt4 book ai didi

php - 表单处理代码是否需要抽象? (Zend_Form)

转载 作者:可可西里 更新时间:2023-10-31 23:26:26 26 4
gpt4 key购买 nike

在 Zend Frameworks 教程中,我可以看到像这样的表单处理代码

if ($request->isPost()) {
$formData = $request->getPost();

$code = $request->getParam("code");
$url = $request->getParam("url");

if ($form->isValid($formData)) {
// here goes code to determine insert/update action,
//retrive record data
//and perform relative database operation

此代码对许多表单重复。我正在努力使表单处理更好,但不要过度设计它。到目前为止,我已将这段代码从 Controllers 移到 Form 对象中。但是代码仍然重复不同的表单类型。

我的问题是——我是应该保持表单处理代码重复还是编写一些将被所有子类使用的 ProcessSubmit() Zend_Form 方法?我的经验是抽象并不总是好的,有时您最终会同步两个本应与开始时不同的类。

ZF 示例展示了重复代码,所以我想知道这种口是心非是否合理(至少对于 3-4 表单的小型网站而言)或是否需要通过一切方式避免。

附言这个任务似乎很常见,我想知道我是否做了双重工作并且已经有一个用于 CRUD 特定表单处理的 ZF 类。

最佳答案

也许是 action helper嗯,可以帮助你:

class App_Controller_Action_Helper_ProcessFormSubmit extends Zend_Controller_Action_Helper_Abstract
{
public function isValid(Zend_Form $form)
{
if ($this->getRequest()->isPost()) {
return $form->isValid($this->getRequest()->getPost());
} else {
return false;
}
}

public function direct(Zend_Form $form)
{
return $this->isValid($form);
}

}

这允许您像这样处理表单提交过程:

// or: if ($this->_helper->processFormSubmit->isValid($form)) {
if ($this->_helper->processFormSubmit($form)) {
// here goes code to determine insert/update action,
//retrive record data
//and perform relative database operation
}

这可以扩展到您的需求,例如自动错误处理等等...

关于php - 表单处理代码是否需要抽象? (Zend_Form),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1755606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com