我们正在使用Zend Framework 1.12,我们已经采取了以下几项行动:
$postParams = $this->getAllParams();
...
$domainModel->update($postParams)
我想知道它是否是处理参数的好方法。或者更好地定义我们想要的参数:
$postParams = array(
'email' => $this->_getParam('email'),
'company' => $this->_getParam('company')
)
或者可能使用数组交集函数来过滤掉意外参数?
答案 0 :(得分:0)
最佳做法应该是
$postParams = array(
'email' => $this->_getParam('email'),
'company' => $this->_getParam('company')
);
使用数组交集可能有效(当然,检查键不是值!)
为什么将所有参数传递给$ domainModel->更新不太好?
取决于更新的逻辑,但假设参数进入数据库查询,通过操纵http请求,我可以向db查询注入一些额外的代码或参数 - 可能更新您不想通过该特定操作更新的字段。
这种方法的缺点是,当您更改模型时,必须检查代码中的这些参数。
答案 1 :(得分:0)
如果可以更改表中的所有列(包括ID),则可以使用getAllParams。除了一个问题:POST可以包含非表格列的变量,因此您将在更新时收到错误(列' ...'未找到)。
答案 2 :(得分:0)
将所有post参数直接传递给模型并不是一个好主意。有时您可能不希望传递特定值来建模。
其次,您可能希望为数据设置一些默认值,以防在未提供的情况下可以执行$this->_getParam('company', DEFAULT_VALUE)
但我会说任何方法的使用取决于您的要求,然后您需要选择一个最适合您的方法。