powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Вызов функции из iframe
9 сообщений из 9, страница 1 из 1
Вызов функции из iframe
    #37718790
--А-MаR--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеем следующую структуру:
класс main.php, отвечающий за логику
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<?php
include ('form1.php');
include ('form2.php');

class Main {
  function f1 () {
    echo('тест');
  }
}

$object = new Main;
if (isset($_GET['f1']))
  form1::f_form1();
elseif (isset($_GET['f2']))
  form2::f_form2();

?>



Интерфейсный класс form1.php
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<?php
class form1 {
  function f_form1() {
    main::f1();
  }
}

$object = new form1;
if (isset($_GET['form1']))
  $object->f_form1();
?>



Второй интерфейсный класс form2.php, в который вставляется form1 в виде фрейма
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?php

class form2 {
  function f_form2() {
      echo '<iframe name="I1" src="form1.php?form1=1">';
      echo '</iframe>';
  }
}
?>



При попытке запустить form2 выдается сообщение "Class 'main' not found in ...form1.php", хотя если не использовать form2 и фрейм, все работает. Как правильно вызвать функцию f1 из фрейма?
...
Рейтинг: 0 / 0
Вызов функции из iframe
    #37718797
--А-MаR--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри, пример не очень удачный, решение нашлось, но в реале все несколько более сложно. Сейчас попробую переформулировать
...
Рейтинг: 0 / 0
Вызов функции из iframe
    #37718798
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PHP работает на сервере и понятия не имеет о фреймах, окнах и т.п.
...
Рейтинг: 0 / 0
Вызов функции из iframe
    #37718842
--А-MаR--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vklePHP работает на сервере и понятия не имеет о фреймах, окнах и т.п.
Имеет или не имеет, но тем не менее один и тот же алгоритм работает по-разному при прямом вызове form1 и при вызове form1 внутри form2, вот это мне и требуется побороть.
Доработал пример
main.php
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
<?php
include ('form1.php');
include ('form2.php');

class Main {
  function f_service () {
    echo('Многократно используемая сервисная функция<br>');
  }


  function f1 () {
    echo('Функция. запускаемая со страницы form1.php<br>');
    form1::f_form1();
  }
}

$object = new Main;

if (isset($_POST['f1']))
  $object->f1();
elseif (isset($_GET['f1']))
  form1::f_form1();
elseif (isset($_GET['f2']))
  form2::f_form2();

?>



form1.php
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?php
class form1 {
  function f_form1() {
    echo '<form action="main.php" method="post">';   
      echo '<input name="f1" type="hidden" value=True>'; 
      main::f_service();
      echo '<input type=submit value="f1">';
    echo '</form>';
  }
}

$object = new form1;
if (isset($_GET['form1']))
  $object->f_form1();
?>



form2.php
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?php

class form2 {
  function f_form2() {
      echo '<iframe name="I1" src="form1.php?form1=1">';
      echo '</iframe>';
  }
}
?>



Смысл следующий: по нажатию кнопки в form1, отрабатывает некий алгоритм (функция main::f1), после чего происходит перерисовка form1. Все прекрасно работает вне iframe, но нужно чтобы работало именно в нем.
...
Рейтинг: 0 / 0
Вызов функции из iframe
    #37718867
--А-MаR--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, конечно можно запихнуть все 3 класса в один файл и проблема решится, но учитывая что помимо main.php будет еще пара десятков классов со своим функционалом, очень не хотелось бы мешать все в кучу.
...
Рейтинг: 0 / 0
Вызов функции из iframe
    #37718880
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--А-MаR--,

Я так и не понял, какое отношение имеют классы к фреймам. Классы у Вас на сервере (и экземпляры классов), а фреймы (и ифреймы) - в клиентском браузере. Как бы, котлеты и мухи желательно отдельно хранить. Да и вообще, нафига там какие-то классы? Вы что фреймворк на продажу пишете?
...
Рейтинг: 0 / 0
Вызов функции из iframe
    #37718895
--А-MаR--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShSerge--А-MаR--,

Да и вообще, нафига там какие-то классы? Вы что фреймворк на продажу пишете?
Вот пока не было необходимости использовать фреймы, очень даже удобно было. Один большой класс, отвечающий за логику (связь с MySQL, связь с Word и Excel, всевозможные расчеты) и собственно страницы с submit-ами, по которым запускаются те или иные функции из логического класса с последующей перерисовкой страниц. Как раз-таки мухи отдельно котлеты отдельно:). Но заказчик возжелал сгруппировать отдельные страницы в одну, и кроме фреймов как-то ничего в голову не пришло. Если есть альтернатива, буду только рад.
...
Рейтинг: 0 / 0
Вызов функции из iframe
    #37718917
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНо заказчик возжелал сгруппировать отдельные страницы в одну, и кроме фреймов как-то ничего в голову не пришло. Если есть альтернатива, буду только рад.
В чем проблема на одной странице накидать сколько угодно блоков без всяких фреймов?
...
Рейтинг: 0 / 0
Вызов функции из iframe
    #37719365
--А-MаR--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Edd.DragonВ чем проблема на одной странице накидать сколько угодно блоков без всяких фреймов?
Проблема была в моих более чем скромных познаниях в HTML:) Спасибо за наводку, ушел курить про блоки.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Вызов функции из iframe
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]