Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Как да направя задаване на валидатори и филтри на форма в Zend Framework 1?

Featured Replies

Здравейте колеги,

В wordpress има един плъгин който генерира форми, в който има възможност да се зададе на всяко поле каква стойност и каква валидация да има. Въпроса ми е следния. Има ли възможност да се направи нещо подобно с Zend Framework 1? Т.е. на вече съществуваща форма да и се подават валидации и филтри от клиентското приложение а не чрез код?

  • 1 месец по-късно...
  • Автор

Здравейте. Относто тази тема направих следното нещо под ZF1.
1. В базата направих 2 таблици. В едната записвам името на формара, а във втората записвам ИД-то на формата с иментата на полетата, какво и дали е задължително поле, филтри и валидатори (филтрите и валидаторите са разделени с запетая).
2. Направих контролер (съответно мепъри и вюта) който обработва данните от клиентското приложение и прави запис в горепосочените таблици.

До тук всичко е ОК и горе долу работи добре, но проблема идва че трябва да правя в останалите контролери повторение на един и същ код където има форма, което не е добре. Има ли възможност да се изнесе някъде този код применрно при зареждането на самото приложение (имам на предвид в "autoloader") също така да проверява кой екшън е и коя форма се използва в екшъна?

т.е. ето какво правя за задам филтри и валидатори в някой контролер където има форма
код в контолер където има форма

$form = new Application_Form_Units_Edit();

// set form filters, validators and required
$formElements = array();
$formsMapper = new Application_Model_FormsMapper();
$formRow = $formsMapper->fetchRow('forms.form="Application_Form_Units_Edit"');

if ($formRow) {
    $formFieldsMapper = new Application_Model_FormFieldsMapper();
    $formFieldsRows = $formFieldsMapper->getFormFields($formRow->getId());
    if (count($formFieldsRows)) {
        foreach ($formFieldsRows as $oneField) {
            $formElements[$oneField->getId()]['name'] = $oneField->getField();
            $formElements[$oneField->getId()]['required'] = $oneField->getRequired();
            $formElements[$oneField->getId()]['filters'] = $oneField->getFilters();
            $formElements[$oneField->getId()]['validators'] = $oneField->getValidators();
            $formElements[$oneField->getId()]['minLength'] = $oneField->getMinLength();
            $formElements[$oneField->getId()]['maxLength'] = $oneField->getMaxLength();
        }
    }
}

$form->setFormElements($formElements);

код в самата форма

public function setFormElements($elements) {
    if (isset($elements)) {
        foreach ($elements as $oneElement) {

            $this->getElement($oneElement['name'])->setRequired($oneElement['required']);

            if ($oneElement['filters']) {
                // create array from saved filters
                $filrers = explode(",", $oneElement['filters']);
                $this->getElement($oneElement['name'])->setFilters($filrers);
            }

            if ($oneElement['validators'] != "") {
                // create array from saved validators
                $validators = explode(",", $oneElement['validators']);
                $this->getElement($oneElement['name'])->setValidators($validators);
            }

            if ($oneElement['minLength'] != "" || $oneElement['maxLength'] != "") {
                $this->getElement($oneElement['name'])->setAttrib('maxlength', $oneElement['maxLength']);
                $this->getElement($oneElement['name'])->addValidator('stringLength', false, array($oneElement['minLength'], $oneElement['maxLength']));
            }
        }

        return $this;
    }
}

Въпроса ми е има ли начин това повторение на кода да се избегне?

Редактирано от spas666 (преглед на промените)

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.