Zend Framework:获取POST参数

时间:2016-02-02 17:51:47

标签: php zend-framework

我们正在使用Zend Framework 1.12,我们已经采取了以下几项行动:

$postParams = $this->getAllParams();
...
$domainModel->update($postParams)

我想知道它是否是处理参数的好方法。或者更好地定义我们想要的参数:

$postParams = array(
    'email' => $this->_getParam('email'),
    'company' => $this->_getParam('company')
)

或者可能使用数组交集函数来过滤掉意外参数?

3 个答案:

答案 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)

但我会说任何方法的使用取决于您的要求,然后您需要选择一个最适合您的方法。