好的,所以我來自Flex/ActionScript背景,因爲這個領域正在慢慢地枯竭,我想它是時候轉移到全職PHP。
無論如何,我認爲我對Zend框架有很好的理解(大部分地方使用它)。但是,他們大多隻用於表抽象類,所以它不是一個好的MVC實踐,更像是Model。
接受採訪我幾乎總是被問到表單驗證發生在哪裏。
現在我知道zend已經建立了驗證器,我不是在談論這個。
我正在討論在視圖中構建的標準HTML表單並將其提交給服務器。
我想知道的問題是,在控制中還是在模型中做得更好?
而且爲什麼要使用zend_form,對我來說,似乎設計師很難讓它變得性感。哪裏是放置表單驗證的最佳地點
2
A
回答
1
如果要連接的驗證器,以在所述控制器中的形式進行驗證,並且可以使用簡單的,如果()循環來檢查元件:
if($form->isValid($postData)) {
//do some stuff
}
否則可以驗證一個簡單的HTML表格或其他輸入在使用Zend_Filter_Input控制器:
//set filters and validators for Zend_Filter_Input
$filters = array(
'id' => array('HtmlEntities', 'StripTags')
);
$validators = array(
'id' => array('NotEmpty', 'Int')
);
//assign Input
$input = new Zend_Filter_Input($filters, $validators);
$input->setData($this->getRequest()->getParams());
if ($input->isValid()) {
//do some stuff
}
你想做的事,至少基本的驗證和過濾控制器,試圖防止跨站腳本和SQL注入兩種方式。
如果需要,您可以隨時在域模型中進行更深入的驗證和過濾。
至於爲什麼使用Zend_Form,它沒有它最先出現的那麼糟糕。使用自定義消息附加驗證器和過濾器的能力對於某些人非常有用。開始時困難的裝飾者可以很好地利用和練習。你也欺騙,只是使用viewScript() decorator(就像我平時所做的那樣)。 viewScript裝飾器以更熟悉的形式提供了很多控制。
下面是一個例子:
//The Form
class Application_Form_Search extends Zend_Form
{
public function init() {
$this->setMethod('POST');
$this->setDecorators(array(
array('ViewScript', array(
'viewScript' => '_searchForm.phtml'//the partial script used as a decorator
))
));
// create new element
$query = $this->createElement('text', 'query');
// element options
$query->setLabel('Search Keywords');
$query->setAttribs(array('placeholder' => 'Artist or Title',
'size' => 27,
));
// add the element to the form
$this->addElement($query);
$submit = $this->createElement('submit', 'search');
$submit->setLabel('Search Site');
$submit->setDecorators(array('ViewHelper'));
$this->addElement($submit);
}
}
partial腳本:
<article class="search">
<form action="<?php echo $this->element->getAction() ?>"
method="<?php echo $this->element->getMethod() ?>">
<table>
<tr>
<th><?php echo $this->element->query->renderLabel() ?></th>
</tr>
<tr>
<td><?php echo $this->element->query->renderViewHelper() ?></td>
</tr>
<tr>
<td><?php echo $this->element->search ?></td>
</tr>
</table>
</form>
</article>
,你可以看到這將是很大的代碼更熟悉和設計師的風格更加容易。
希望這會有所幫助,祝你好運......
0
驗證的是模型的一部分,因爲它知道有關驗證某個實體的商業邏輯,但內部的控制器使用。
Zend_Form帶有像ViewScript這樣的裝飾器,它使得desinger使它變得性感,並使開發人員驗證,過濾,填充表單輸入變得輕而易舉。
相關問題
- 1. 哪裏是驗證表單數據的最佳位置?
- 2. 在Mac上放置Android SDK的最佳地點在哪裏?
- 3. 哪裏是定義字段驗證的最佳位置?
- 4. 哪裏是放置WindsorContainer並避免循環項目參考的最佳地點?
- 5. 哪裏是放置自定義設計動作的最佳地點
- 6. Rails 3:放置自定義驗證器類的最佳位置在哪裏?
- 7. SET NOCOUNT的最佳地點在哪裏?
- 8. 哪裏是放置UIViewController的設置代碼的最佳位置;
- 9. 使用jQuery Mobile表單,我在哪裏放置驗證消息?
- 10. 你在哪裏放置驗證邏輯?
- 11. 在Zend Framework中放置自定義jquery和javascript的最佳地點在哪裏?
- 12. 哪裏是開始學習servlet/tomcat的最佳地點?
- 13. 哪裏是重新學習圖形編程的最佳地點
- 14. 哪裏是檢查權限的最佳地點?
- 15. PHP - 哪裏是發起數據庫課程的最佳地點?
- 16. 哪裏是學習React JS的最佳地點?
- 17. Payum - 哪裏是修改付款細節的最佳地點?
- 18. Drupal:放置drupal_goto的最佳地點
- 19. 應用程序的最佳位置在哪裏進行驗證?經驗法則?
- 20. 使用AJAX驗證單個字段 - 在哪裏放置邏輯?
- 21. 哪裏是啓動期間設置RCP視角的最佳地點?
- 22. 構建表單時,哪裏是設置標籤值的最佳位置?
- 23. 多表單驗證:有效時在哪裏放$ ajax?
- 24. 我應該在哪裏放置一個被認爲是最佳實踐的驗證方法?
- 25. 在哪裏把驗證代碼的PHP表單驗證
- 26. 在哪裏驗證PHP類中的輸入 - 最佳實踐
- 27. 哪裏是放置不需要選擇的DJango Admin操作的最佳位置?
- 28. PHP表單驗證最佳實踐
- 29. 哪裏是放置NSUserDefault保存/加載代碼的最佳位置?
- 30. CakePHP - 哪裏是放置特定佈局邏輯的最佳位置?
我只想補充一點,Zend_Form對於TDD是有好處的...... – tasmaniski