Проверка формы на стороне сервера Magento

Есть ли проверка формы на стороне сервера в magento? Я создал и использовал проверку формы magentos, но это не сработает, если кто-то отключит javascipt и введет что-то, что может быть вредным. если для этого нет встроенного класса. может кто-нибудь указать мне направление, как реализовать проверку формы на стороне сервера в качестве резервной копии. вот мой мой код для формы

<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>   


person Zero Cool    schedule 29.07.2011    source источник


Ответы (3)


Если вы хотите, чтобы это было просто, вы можете выполнить проверку в своем контроллере.

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: http://files.zend.com/help/Zend-Framework/zend.validate.html

person Renon Stewart    schedule 24.09.2012
comment
Спасибо, сэр, за ответ, это помогло мне - person PRashant PUrohit; 16.04.2016

Да, в Magento есть проверка на стороне сервера для некоторых форм. Однако модуль, который добавил форму, отвечает за ее проверку, поэтому, если вы имеете дело со сторонним кодом, таким как плагин, его может не быть.

Обычно код проверки находится в части модели модуля. Например, во встроенной функции проверки Magento при отправке формы проверки ее данные проверяются функцией validate() в файле /app/code/core/Mage/Review/Model/Review.php. Я бы начал с просмотра этого кода и кода в существующих модулях Mage/Core для примера.

В ситуации, которую вы даете, обычным местом для логики проверки будет /app/code/local/YourCompany/PriceNotify/Model/Pricenotify.php

person Brighid McDonnell    schedule 02.12.2011

Magento использует прототип для проверки форм. Чтобы реализовать эту проверку, просто добавьте «required-entry» к вашему входному тегу.

person Michael Conner    schedule 08.08.2011
comment
OP явно запрашивает проверку на стороне сервера. Прототип — это только js и клиентская сторона (а также действительно не безопасный) - person Clement Herreman; 05.10.2011