За последние 24 часа нас посетили 17604 программиста и 1590 роботов. Сейчас ищут 1568 программистов ...

FormCacher - Кешер форм

Тема в разделе "Решения, алгоритмы", создана пользователем Mr.M.I.T., 8 авг 2009.

  1. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    да.

    а если у меня трава?
    =)
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    я на сег. день так делаю:

    это блок в шаблоне
    HTML:
    1.  
    2. <!-- BEGIN REGFORM -->
    3.  
    4. <h1>Регистрация</h1>
    5.  
    6. <div id="form">
    7.     <div class="ui-widget ui-state-highlight ui-corner-all" style="padding: 30px;">
    8.         <form name="regform" id="regform">
    9.         <input type="hidden" name="cz" value="{ME}">
    10.         <input type="hidden" name="method" value="reg">
    11.         <table>
    12.             <tr>
    13.                 <td>
    14.                     <label>E-mail:</label>
    15.                     <input type=text name=email id=flogin><br />
    16.                     <span id="floginerror" class="error"></span>
    17.                 </td>
    18.             </tr>
    19.  
    20.             <tr>
    21.                 <td>
    22.                     <label>Пароль:</label>
    23.                     <input type=password name=pass1 id=fpass1>
    24.                 </td>
    25.             </tr>
    26.  
    27.             <tr>
    28.                 <td>
    29.                     <label>Пароль еще раз:</label>
    30.                     <input type=password name=pass2 id=fpass2>
    31.  
    32.                 </td>
    33.             </tr>
    34.         </table>
    35.        
    36.         <button id="fbut2" class="ui-state-default ui-corner-all ui-state-focus" OnClick="$('#regform').submit(); return false;">Зарегистрироваться</button>
    37.  
    38.         </form>
    39.  
    40.     </div>
    41. </div>
    42.  
    43.  
    44.         $("#flogin").EnigmaValidatorEmail(
    45.                 {
    46.                     output : 'floginerror'
    47.                 }
    48.             );
    49.  
    50.         $("#flogin").focus();
    51.  
    52.         $("#regform").submit(
    53.            
    54.             function() {
    55.  
    56.                 var email       = $('#flogin').val();
    57.                 var emailerror  = $('#floginerror').text();
    58.  
    59.                 if( email == '' ) {
    60.                     $.EnigmaError('Введите свой e-mail!',{},function() { $('#flogin').focus() });
    61.                     return false;
    62.                 }
    63.  
    64.                 if( emailerror != '' ) {
    65.                     $.EnigmaError(emailerror,{},function() { $('#flogin').focus() });
    66.                     return false;
    67.                 }
    68.  
    69.                 var p1 = $('#fpass1').val();
    70.                 var p2 = $('#fpass2').val();
    71.  
    72.                 if( p1 == '') {
    73.                     $.EnigmaError('Введите пароль.',{},function() { $('#fpass1').focus() });
    74.                     return false;
    75.                 }
    76.  
    77.                 if( p2 == '') {
    78.                     $.EnigmaError('Подтвердите пароль.',{},function() { $('#fpass2').focus() });
    79.                     return false;
    80.                 }
    81.                
    82.  
    83.                 if( p1 != p2) {
    84.                     $.EnigmaError('пароли не совпадают.',{},function() { $('#fpass1').val('').focus(); $('#fpass2').val('') });
    85.                     return false;
    86.                 }
    87.  
    88.                 //$("#fbut2").text('регистрация...').attr('disabled','disabled');
    89.                 $(this).EnigmaSubmit();
    90.                 return false;
    91.             }
    92.         );
    93.  
    94.  
    95.  
    96. <!-- END REGFORM -->

    суть в том, что форма при посте не затрагивается и ошибка, даже когда ушел пост, не затронет полей.
    =)
     
  3. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
  4. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    440Hz
    и пришёл он без Js и здохла у него форма =)
     
  5. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk

    HTML:
    1. [:loop options:]
    2.     <input type="checkbox" name="option[]" value="[:value:]"[:checked:] /> [:valueTitle:]<br>
    3. [:/loop:]
     
  6. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    без JS щаз нах никто не нужен
    =)
     
  7. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Koc
    я говорил про статичную форму
    и откуда переменаня checked возьмётся?
    я знал что ты скажешь это
    а если форма и её обработка на разных страницах?
     
  8. У меня есть такие приложения. Не сайты. Админки веб-сервисов, инет-магазинов.
     
  9. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    PHP:
    1.  
    2. <?php
    3. $options = array();
    4.  
    5. $option = array(
    6.     'value'       => 1,
    7.     'valueTitle' => 'option 1'
    8.     'checked'   => (in_aray(1, $_POST['options[]'])) ? CHECKED : NULL
    9. );
    10.  
    11. $options[] = $option;
    12. // ...
    13.  
    14. $tpl->l('options', $options);

    ага. У меня тоже таких куча. Добавление-редактирование: атрибутов, наборов атрибутов, производителей, товаров, заказов, типов оценок, новости, контент, ... .
     
  10. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Обновил первый пост, добавил полноценную работу с массивами любой вложенности
     
  11. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Koc
    статичная форма это значит ничего в php не генерится а всё прописывается в шаблончике вручную =)
    может быть 1000 боксиков многовато, это я для гиперболы, а вот 10-15 бывается приходится писать
    такого нет
     
  12. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    придираешься
     
  13. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    короче я пытаюст вас подвести к тому что может настать такая ситуация когда придётся прописывать каждое поле вручную

    HTML:
    1. <input type='checkbox' name='option[]' value='1' <?if(in_array(1,$_POST['option])) print "checked";?>> Option 1<br>
    2. <input type='checkbox' name='option[]' value='2' <?if(in_array(2,$_POST['option])) print "checked";?>> Option 2<br>
    3. <input type='checkbox' name='option[]' value='3' <?if(in_array(3,$_POST['option])) print "checked";?>> Option 3<br>
    4. <input type='checkbox' name='option[]' value='4' <?if(in_array(4,$_POST['option])) print "checked";?>> Option 4<br>
     
  14. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Koc
    да даже если ты будешь вставлять это всё динамически, будет у тебя форма с сотней полей
    ЗАДОЛБАЕШЬСЯ
     
  15. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    не знаю. Пока жив-здоров.

    Будет много чекбоксов - сделаю массив значение, valuesTitle через запятую, а $options будут генерироваться в массиве.
     
  16. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Koc
    а будет много всяких разных поелй в форме?

    ладно, заканчивай сравнивать несравнимые вещи, они не сравниваются

    Здравые альтернативы, пока: Генератор форм, JS проверка
     
  17. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Mr.M.I.T.
    а мне нравится твоя идея, если отбросить вопрос с хранением переменных в сессии. Я когда-то писал похожую реализацию но опробовать в деле так и не успел. Форму можно хранить в отдельном файле и инклудить в шаблон. В общем надо развивать идею.
     
  18. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    вот читаю я все это и думаю, что топик ни о чем...
     
  19. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Sergey89
    там по дефолту сессии не используются,
    сессии используются для реализации дополнительной фичи - кеширования
    440Hz
    ну если посмотреть в корень - то да =)
    холивар тут ниочём
     
  20. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Устранил кучу багов,
    ссылка в 1 посту
     
  21. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    сколько лет, сколько зим, а формкешер все ещё работает :) правда немного переделанный, но в целом все тоже самое...
    Вы спросите как я заполняю формы при редактировании?
    А вот так:
    Код (PHP):
    1. FormCacher::AddVar($form_data); 
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не вкурил как он и зачем =(
     
  23. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    автоматом подставлят в формы значения (в value, textarea, select'ы, radio и пр)
    сейчас не так актуально, тк есть аякс (хотя я использую для первичного заполнения при редактировании)
    вот тоже самое почти http://dklab.ru/lib/HTML_FormPersister/
     
  24. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Код (Text):
    1.  {{ Form::text('name') }}
    А оно уже само там решает что вставить: данные из модели, сохраненные значения и т.д. ))
     
  25. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    а select или radio? да и шаблон надо открывать, расставлять там все это...