2011-07-29 18 views
4

マジェンタ版のサーバー側フォーム検証はありますか?私はfromとmagentosフォームのバリデーションを作成しましたが、誰かがjavasciptを無効にして有害な可能性のあるものを入力すると動作しません。そのためのクラスが組み込まれていない場合。誰かがバックアップとしてサーバー側フォームの検証を実装する方法の方向性を指摘してくれますか?ここでは、フォームのための私の私のコードMagentoサーバー側書式確認

<div style="border:0px solid red; margin:0px auto;"> 

<?php $_product = $this->getProduct(); ?> 


<form id="test" action="<?php echo Mage::getUrl('pricenotify/pricenotify/db') ?>" method="post"> 

      <label for="price">Price *</label> 
      <input type="text" id="price" name="price" value="" class="required-entry validate-number"/><br /> 
      <label for="email">Email Address *</label> 
      <input type="text" id="email" name="email" value="" class="required-entry validate-email"/> 
      <input type="hidden" id="id" name="id" value="<?php echo $_product->getId() ?>" /> 
      <input type="hidden" id="propri" name="propri" value="<?php echo $_product->getPrice() ?>" /> 

      <input type="submit" name="submit" value="<?php echo $this->__('Submit') ?>" onclick="if(customForm.validator && customForm.validator.validate()) this.form.request(); return false;" /> 

</form> 

<script type="text/javascript"> 
//< ![CDATA[ 
var customForm = new VarienForm('test',false); 
//]]> 
</script> 

答えて

-4

があるMagentoのは、フォームを検証するために試作品を使用しています。この検証を実装するには、入力タグに "required-entry"を追加するだけです。

+8

OPはサーバー側の検証を明示的に要求します。プロトタイプはjsとクライアント側のみです(実際には**安全ではありません) –

3

はい、Magentoにはいくつかのフォームのサーバー側の検証機能があります。しかし、フォームを追加したモジュールはそれを検証する責任があります。プラグインのようなサードパーティのコードを扱っている場合、そこにはないかもしれません。

従来、検証コードはモジュールのModel部分に存在します。たとえば、Magentoのビルトインレビュー機能では、レビューフォームが提出されると、そのデータは/app/code/core/Mage/Review/Model/Review.phpファイルのvalidate()関数によって検証されます。まず、そのコードと、既存のMage/Coreモジュールのコードを見てみましょう。あなたが与える状況で

、検証ロジックのための従来の場所は、あなたがそれをシンプルに保ちたい場合は、あなたのコントローラ

try { 
      $postObject = new Varien_Object(); 
      $postObject->setData($post); 

      $error = false; 

      if (!Zend_Validate::is($postObject->getPrice(), 'NotEmpty')) { 
       $error = true; 
      } 

      if (!Zend_Validate::is($postObject->getEmail(), 'EmailAddress')) { 
       $error = true; 
      } 

      if ($error) { 
       throw new Exception(); 
      } 


      //save to db 

      return; 
     } catch (Exception $e) { 
      Mage::getSingleton('customer/session')->addError(Mage::helper('pricenotify')->__('Unable to submit your request. Please, try again later')); 
      $this->_redirect('/'); 

      return; 
     } 

Zend_Validateの中で検証を行うことができ/app/code/local/YourCompany/PriceNotify/Model/Pricenotify.php

関連する問題