Проверка формы на стороне сервера Magento - PullRequest
4 голосов
/ 29 июля 2011

есть ли проверка на стороне сервера в 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>   

Ответы [ 3 ]

8 голосов
/ 25 сентября 2012

Если вы хотите сохранить простоту, вы можете выполнить проверку в вашем контроллере

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

4 голосов
/ 02 декабря 2011

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

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

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

0 голосов
/ 08 августа 2011

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

...