如何从控制器内的请求对象中完全删除param?
有这方法吗?
或者我应该选择所有参数,循环它们,删除然后重新设置它们?
这是斯巴达? :d
答案 0 :(得分:6)
要使用NULL值删除参数,请使用unset php函数或setParam()。如果要循环使用请求对象中的getParams()函数。
<强> 更新 强>
由于params是受保护的变量,因此可以调用__unset()来访问不可用的属性。 您将不得不为此扩展Zend_Controller_Request_Abstract。
答案 1 :(得分:1)
我补充一点,如果您的请求是HTTP请求,那么您将无法更改来自GET或POST参数的参数。这些参数通过覆盖访问器虚拟地添加到所有参数,因此使用GET或POST变量键作为参数的这些请求上的setParam()将不执行任何操作,因为setParam()测试密钥是否存在于“内在”参数中requets,而不是HTTP。
要更改这些类型的参数,您必须直接从$ _GET或$ _POST php数组中取消设置键。
答案 2 :(得分:1)
ZF2的做事方式。
if ($request->getPost()->offsetExists('myparam')) {
$request->getPost()->offsetUnset('myparam')
}