2009-06-18 28 views
2

我使用從官方的Zend framwork文檔這裏的密碼確認驗證:
http://framework.zend.com/manual/en/zend.form.elements.htmlMy_Validate_PasswordConfirmation應該放在Zend框架中哪裏?

在bootstrap.php中,我已經設置了命名空間
'命名空間'=> 'MY_'

的文件位於 應用程序/驗證/ PasswordConfirmation.php

但是,「致命的錯誤:Class'My_Validate_PasswordConfirmation'找不到'在我的Zend_Form中發生。

我應該怎麼做才能解決這個問題?

回答

4

我設計並實現了Zend_Filter_Input,包括它的命名空間功能。

您對此功能的工作原理有了一個瞭解。它的意思是允許您在該類的實際名稱更長時使用驗證程序類的簡稱。你顯然正在做相反的事情,試圖命名一個比實際名字更長的名字。

爲了解決這個問題,我建議以下步驟:

  • 的名稱,該類My_Validate_PasswordConfirmation
  • 把它放在`應用程序/我的/驗證/ PasswordConfirmation.php
  • 添加namespace=>'My_Validate'Zend_Filter_Input選項。
  • 將驗證程序調用爲「PasswordConfirmation」。

更新:我花了一些時間在這。看來我的第一個想法是脫離目標。您擁有的名稱空間問題與Zend_Filter_Input的功能無關,它與Zend_Application引導程序功能有關。看起來你可以爲自動加載器指定一個類前綴。

下面是另一個clue

Zend_Loader_Autoloader_Resource makes the assumption that all code you are autoloading will use an underscore separator between namespaces, components, and classes. As a result, you do not need to use the trailing underscore when registering a resource autoloader.

那麼試試這個:

'namespace' => 'My', 

沒有尾隨下劃線。

+0

在官方快速入門教程中,Default_Form_Guestbook被放置在application/forms/Guestbook.php下,Default_Model_Guestbook被放置在application/models/Guestbook.php下。這讓我覺得我應該按照這樣的文件夾結構。 如何將namespace =>'My_Validate'添加到Zend_Filter_Input選項中? 我閱讀本教程: http://zfsite.andreinikolov.com/2008/05/part-4-zend_form-captcha-password-confirmation-date-selector-field-zend_translate/ 你會建議我把庫文件夾下的自定義驗證器?我必須使用「addPrefix」或其他來使其工作嗎? – Billy 2009-06-19 02:42:51