Опубликован: 07.11.2006 | Уровень: специалист | Доступ: свободно
Лекция 19:

Flash, ColdFusion и Remoting

< Лекция 18 || Лекция 19: 1234567
Добавление контактов

В следующем параграфе о PMA мы рассмотрим функциональность, заключающуюся в добавлении контактов в базу данных. Кнопка add является компонентом PushButton, который вызывает метод обработки щелчка мыши addConfirm при нажатии кнопки.


Создадим метод addConfirm, который установим в качестве обработчика щелчка. При нажатии кнопки должно отображаться сообщение, инструктирующее пользователя о том, как добавить новый контакт. После этого можно либо продолжить работу, либо выбрать отмену и вернуться в PMA.

  1. Начнем с отображения фильма сообщения, установив параметр видимости компонента MessageBox на значение 1, т.к. по умолчанию в фильме этот параметр отключен. Также установим размер и сообщение фильма, как показано ниже.
    function addConfirm(  {
    
      message_mc._visible = 1;
      message_mc.setSize(200, 150);
      message_mc.setMessage("Please fill out the form and click
      К\"save\" tc add the new contact");
  2. Далее устанавливаем кнопки и их ширину в MessageBox с помощью массива кнопок для хранения имен PushButtons в MessageBox. Затем вызываем методы setButtons и setButtonWidth для динамического добавления и установки размера кнопок.
    var buttons = ["Okay", "Cancel"];
    message_mc.setButtons(buttons); 
    message_mc.setButtonWidth(60);
  3. Наконец, определяем метод закрытия обработчика.
    message_mc.setCloseHandler ("addContact");
    }

    Затем здесь устанавливаются некоторые параметры (такие как размер окна) и сообщение. Возможность динамической настройки этих параметров очень полезна, равно как и то, что можно использовать компонент MessageBox для других сообщений подтверждения в любом месте приложения. Последняя строка вышеуказанного кода устанавливает метод закрытия обработчика MessageBox, вызываемого каждый раз при закрытии окна. Очевидно, нам не требуется, чтобы что-либо происходило после нажатия кнопки cancel , поэтому нужно соответствующим образом дополнить метод addContact.

  4. При нажатии кнопки OK нужно очистить поля формы и включить кнопку save, чтобы пользователь мог добавить информацию о новом контакте.
    function addContact(component, buttonlndex) { 
      if (buttonlndex == 0) {
        first_name = "";
        last_name = "";
        address = "";
        city = "";
        state = "";
        zip = "";
        email = "";
        phone = "";
        notes.text = "";
        save_mc.setEnabled(true); 
      } 
    }

    Так как кнопка OK имеет в массиве индекс 0, определяем, была ли она нажата, и очищаем поля формы перед тем, как сделать доступной кнопку save. Если она не была нажата, ничего не происходит, и пользователь возвращается в PMA.

  5. Теперь поля ввода очищены, и кнопка save доступна, поэтому пользователь может создавать новую запись. Он должен заполнить все поля, и здесь мы используем простой метод проверки того, что заполнены именно все поля.
    function validateFields() {
      if (first_name != '' && last_name != '' && address != '' &&
      Кcity != '' && state != '' && zip != '' && email != '' &&
      Кphone ! ='' && notes. text != 
        '' && calendar_mc.getSelectedItem()) {
        return true;
      } 
    }

    Этот метод проверяет существование данных в полях, а также выбор даты создания контакта. Разумеется, проверка может быть изощреннее, однако для наших целей и такая вполне годится. Если вы хотите сделать приложение функциональнее, смело расширяйте возможности этого метода и создайте схему проверки, удовлетворяющую вашим нуждам. Метод validateFields возвращает значение true, если форма успешно проходит проверку.

  6. Теперь можно использовать этот метод совместно с методом saveContact, который будет вызываться при щелчке пользователем на кнопке save для сохранения новой контактной информации в базе данных.
    function saveContact() { 
      if(validateFields()) {
  7. Так как в нашем случае пользователь заполнил все поля, создайте объект нового контакта для передачи в CF.
    var o = new Object();
    o.first_name = first_name;
    o.last_name = last_name;
    o.address = address;
    o.city = city;
    o.state = state;
    o.zip = zip;
    o.email = email
    o.phone = phone;
    o.notes = notes.text;
    o.birth_date = birth_date;
  8. Каждый раз при выборе даты в календаре, мы вызываем обработчик изменений getBirthDate, который устанавливает переменную birth_date. Отправьте его в saveContact CFC через шлюз Flash.
    contacts_service.saveContact(o); 
    }   else   {
  9. Если пользователь не заполнил все поля, он будет оповещен об этом с помощью того же окна сообщения, что использовалось нами ранее. Это делается так же, как и в функции addConfirm.
    message_mc._visible = 1;
    // set the size and message of the clip
    message_mc.setSize(200, 150);
    message_mc.setMessage ("Please be sure to fill out all fields.");
    // set the buttons and their width in the MessageBox
    var buttons = ["Okay"];
    message_mc.setButtons(buttons); 
    message_mc.setButtonWidth(60);
  10. Теперь нужно просто сбросить метод закрытия обработчика, если он был установлен.
    message_mc.setCloseHandler(null); 
      } 
    }
  11. Перейдем обратно в текстовый редактор, в котором введены функции ColdFusion, и создадим модуль CFC, ответственный за захват информации из объекта и добавление ее в базу данных, который мы только что вызывали в функции saveContact. Введите следующий код.
    <!--- save contact info --->
    <cffunction name="saveContact" access="remote">
    <cfquery datasource="#request.dsn#" name="add_contact">
    insert into contacts(first_name, last_name, address, city, state,
    Кzip, email, phone, notes, birth_date) 
     values('#flash.first_name#', '#flash.last_name#',
      К'#flash.address#', '#flash.city#', '#flash.stateft', 
       '#flash.zip#', '#flash.email#', 
       К#flash.phone#', '#flash.notes#', #createodbcdate
        (flash.birth_date)#);
    </cfquery>
    <cfreturn 1 />
    </cffunction>

    Если вы уже хорошо знакомы с CF и областями применения переменных, то обрадуетесь, узнав, что области применения переменных Flash существуют и в ColdFusion MX. Доступ к данным, переданным из Flash, можно осуществлять так: flash.имя_переменной. Это способ доступа к данным, переданным из Flash, а также их включения в выражение insert. После успешного выполнения insert, возвращаем флажок успешного завершения во Flash. Этот флажок имеет значение 1 и будет передан обратно методу saveContact_Result.

  12. Этот метод будет выводить сообщение об успешном окончании операции, если вставка была успешной. Он проверяет, была ли вставка успешной, и если это так, выводит сообщение об успешном окончании операции. Добавьте следующий код к уже имеющимся действиям в фильме Flash.
    function saveContact_Result(success) { 
      if(success) {
        message_mc._visible = 1;
        message_mc.setSize(200, 150);
        message_mc.setMessage("The new contact 
         was added successfully.");
        // set the buttons and their width in the MessageBox
        var buttons = ["Okay"];
        message_mc.setButtons(buttons);
        message_mc.setButtonWidth(60);
        // reset the close handler method in case it was already
        // set
        message_mc.setCloseHandler(null);
  13. После этого вызывается начальный метод getAllContacts, который обновит список ListBox нашим новым контактом.
    contacts_service.getAllContacts(); 
      } 
    }
< Лекция 18 || Лекция 19: 1234567
Игорь Хан
Игорь Хан
След не остается
Александр Коргапольцев
Александр Коргапольцев
Вопрос по содержанию лекции №2, курс Flash MX Studio
Анатолий Федоров
Анатолий Федоров
Россия, Москва
Ольга Ремез
Ольга Ремез
Латвия, Рига