2015-04-20 1 views
2

Я новичок в PHP, и у меня много форм в PHP. Формы используют стандартные поля ввода HTML и должны быть проверены на сервере. Как я могу реализовать это, так что мне не нужно писать много шаблонов HTML снова и снова, а только писать минимальный код, который генерирует «полные формы». Каков рекомендуемый подход для реализации этого? Благодарю.Как реализовать логику обработки PHP-форм, которая многократно используется?

+0

Конечно, если у вас есть пример существующих проектов/фреймворков, которые делают это уже, это было бы здорово также в качестве ответа. спасибо –

+0

Вы можете использовать шаблонные механизмы, затем вы можете передать некоторые параметры, чтобы сообщить шаблону, какие поля форм вы хотите на этой странице. Я использовал механизм шаблонов, представленный Yaf в бизнесе. –

+1

[Этот вопрос] (http://stackoverflow.com/questions/737385/easiest-form-validation-library-for-php), и его ответы могут вам помочь. – Blackus

ответ

1

Если вы предпочитаете делать это все вы сами должны, по крайней мере, сделать это PHP-классы, которые избавят вас от повторной записи (если все сделано правильно ;-)). Обработка атрибутов полей через массив-ассоциированный элемент, например. как это:

<?php 

    $form = new Form("MyInput", array ("submit" => "myform.php")); 

    $form->AddField("input_text", array ("label" => "Your name")); 

?> 

Для обработки проверки, можно использовать такие атрибуты, как

$form->AddField("input_text", array (
     "label" => "Your name" , 
     "validate" => "required" 
    )); 

(Только примеры, есть много кода, чтобы это Сопутствующие которые вы должны были бы написать один раз .. .)

Это должно быть полезно для целей обучения ...

Далее вы можете использовать JS для проверки. Pls. обратите внимание, что JS выполняет только проверку на стороне клиента, и вы не можете полагаться на ее выполнение (пользователь, возможно, включил JS в своем браузере), поэтому вы все еще ДОЛЖНЫ проверять на PHP при получении данных. (И вы можете использовать JS-библиотеки для этого - я использовал Parsley и был очень доволен этим ...)

Если вы хотите пропустить этот опыт, используйте Frameworks или Templating Engines.

+0

Привет, MBaas, это отлично! Благодарю. Вы пишете о Frameworks и Template Engines. Можете ли вы, возможно, разработать и их, если вы знаете, что это работает, как вы описали в своем посте, было бы надобно назвать их. Благодаря! –

+0

Спасибо за петрушку. Это кажется замечательным. До сих пор я использовал jqueryvalidation.org. но петрушка кажется очень многообещающей. Благодарю. –

+0

Привет, Тим, код, который я показал, был вдохновлен чем-то, что я написал для клиента как часть контракта - я реализовал такие элементы управления для всех HTML-элементов управления, и это было довольно много работы, но очень полезно, и тот факт, что один класс использовался снова и снова, был наиболее полезным. :) Если вы решите работать с существующими продуктами, Smarty (как упоминалось другими плакатами) является хорошим выбором (http://www.smarty.net/). И есть бесконечное количество фреймворков, мои предложения - http://www.yiiframework.com/, http://laravel.com/, http://symfony.com/ и http://framework.zend.com/ – MBaas

1

Я бы предложил создать шаблон формы. Рассмотрите возможность использования методы (класс View):

private static function capture($view_filename, array $view_data) 
{ 
    extract($view_data, EXTR_SKIP); 

    ob_start(); 

    require $view_filename; 

    return ob_get_clean(); 
} 

и вызвать статическую функцию capture (осторожно: рассмотреть использование __toString() для печати объектов) Псевдо-код:

echo View::capture('template', array('id' => '1', 'class' => 'userForm', 'inputs' => array(0 => array('label' => 'Name', 'type' => 'text'), 1 => array('label' => 'Password', 'type' => 'password'))); 
Смежные вопросы