2011-02-13 59 views
1

我是新的Zend框架,但我還沒有找到解決方案。問題是: 我有表格,當提交時用戶去索引控制器,並有一個添加動作。我知道我可以得到PARAMS,這就是我想要做的:Zend Framework,getParams - > setParams

$clear = $this->getRequest()->getParams(); 
foreach ($clear as $key => $value) { 
    $clear[$key]=trim(strip_tags($value)); 
} 
$this->setRequest()->setParams($clear);//error, Argument 1 passed to Zend_Controller_Action::setRequest() must be an instance of Zend_Controller_Request_Abstract 

所以問題是如何在整個頁面PARAMS改變,所以如果我想在任何地方訪問這些數據,我可以肯定,他們是安全的。是否有可能將該參數僅更改爲索引控制器。提前致謝!

回答

1

將setRequest()更改爲getRequest()。

$this->getRequest()->setParams($clear); 
+0

:)謝謝,爲什麼我沒有試過:)這正是我想要的!並感謝所有的建議。任何人都知道一些很好的教程,以zend框架,書籍等開始,我將不勝感激! – Neat 2011-02-13 19:10:39

1

試試這個:

$request = $this->getRequest(); 
$clear = $request->getParams(); 
foreach ($clear as $key => $value) { 
    $clear[$key]=trim(strip_tags($value)); 
} 
$request->setParams($clear); 

換句話說,你不希望更換請求(與setRequest()),但僅僅與setParams()更換PARAMS。

+0

謝謝,我知道我可以做到這一點,但有興趣在框架中操作params ...謝謝! – Neat 2011-02-13 19:00:13

+0

我錯了,它幾乎是相同的,只是我想要相同的對象更改屬性...我的意思是我知道是使新的對象,並添加一些屬性... :) – Neat 2011-02-14 23:41:49

3

您可能想看看Zend_Filter_Input驗證和過濾用戶輸入。如果只打算將數據保存到模型中,我認爲改變請求參數是個不好的做法。相反,讓Zend_Filter_Input處理它並將結果提供給您的模型。

如果您要轉發到另一個控制器操作,該怎麼辦?您將無法訪問未更改的內容。當別人在你的項目中萌芽時,他/她可能不希望請求參數被改變。