Jump to content

Свое модальное окно

Featured Replies

Posted
comment_173379

Есть кнопка, как на нее повесить событие или что та еще, чтобы при клике, всплывало модальное окно?

При помощи инструментов ips, в которых уже есть возможность открывать модальные окна

  • Author
comment_173384

Элементу по примеру присваиваю

role="button" data-ipsdialog="" data-ipsdialog-title="Создать" animating="false"

При клике ничего не происходит, ни открытия окна, ни какого либо запроса

comment_173386

<a id="myId" href="https://link/" data-ipsdialog="" data-ipsdialog-size="medium" data-ipsdialog-title="Title" class="ipsButton ipsButton_*type* ipsButton_medium" title="title">ButtonName</a>

  • Author
comment_173399
data-ipsdialog-size='narrow'  data-ipsdialog-width="70"

Никак не выходит выставить свою ширину модального окна. В данном случаи возможно скажем задать ширину 200px?

comment_173401

Не проверял, но думаю, что можно в стили добавить что-то типа

.ipsDialog.ipsDialog_my200 > div {
        max-width: 200px;
}

и в data-ipsdialog-size='my200'

  • Author
comment_173406

Модальное окно сделал, подгружаю данные. Но что если пользователь не авторизован, как отдать такой же шаблон в ответ?

dsz.png

comment_173408

Ну вы же можете получить статус пользователя? Просто отправляете другой шаблон в ответ.

  • Author
comment_173422

В модальном окне вывожу форму, в ней поля с данными. Каким образом возможно выполнить якс запрос и при этом передать данные формы?

Второй вопрос:

Для того чтобы определить переданы данные яксом, пост запросов. Выполняю проверку так

$_SERVER['REQUEST_METHOD'] == 'POST'

В ips предусмотрена какая нибудь функция для этого?

comment_173473

На такой случай нужно читать документацию: если подставить свойство remoteSubmit, то форма будет отправлена аяксом.

В 13.10.2021 в 14:13, Zuldek сказал:

В ips предусмотрена какая нибудь функция для этого?

if ( \IPS\Request::i()->isAjax() )
{

}

 

  • Author
comment_173508

Как вывести сообщение после отправки формы, понятно. Но что если необходимо внести изменения в html документ. То есть выполнить определенный js код после отправки. Возможно это?

Как в таком случаи выставить проверку на поля которые обязательны к заполнению? И как принять данные в php, от формы. Которые будут профильтрованны от возможных инекций?

comment_173516
5 часов назад, Zuldek сказал:

То есть выполнить определенный js код после отправки. Возможно это?

Перехватить submit формы, сформировать и отправить ajax запрос на сервер, получить ответ в json (например), найти средствами jquery нужный элемент, изменить его. 

5 часов назад, Zuldek сказал:

И как принять данные в php, от формы.

Все данные (и POST и GET) живут уже профильтрованные в \IPS\Request->i()->... 

  • Author
comment_173517

С этим разобрался. Создал форму путем

$form = new \IPS\Helpers\Form;

// Add our form fields
$form->add( ... );
$form->add( ... );

Вот только форма отправляет, не обновляя страницу. Но как в таком случаи, если пользователь отправляет пустое поле. Как его сделать обязательным?

comment_173520

Посмотреть в конструктор класса. Например для поля типа Text:

public function __construct( $name, $defaultValue=NULL, $required=FALSE, $options=array(), $customValidationCode=NULL, $prefix=NULL, $suffix=NULL, $id=NULL )
	{

 

  • Author
comment_173531
13 часов назад, Desti сказал:

отправить ajax запрос на сервер, получить ответ в json (например)

Отправляю ajax запрос на сервер, как верно отдать js код?

\IPS\Output::i()->sendOutput(json_decode("console.log('sdf')"))

Не выводится сообщение в консоле

comment_173540

\IPS\Output::i()->json( $data );

Но сообщение в консоли вы так не увидите :), для этого надо писать свой JS, причем в режиме разработчика, а не правкой существующих файлов.


 

  • Author
comment_173552

Как сделать ссылку, клик по которой не будет обновлять страницу, а отправит якс запрос?

В модальном окне выводит

console.log('ss');

В index.php прописал

define( 'IN_DEV', TRUE );

 

  • Author
comment_173554

Ничего не помнимаю.

1 - необходимо создать js файлы

2 - когда отправляем якс запрос, отдавать что та вроде

\IPS\Output::i()->jsFiles = array_merge( \IPS\Output::i()->jsFiles, \IPS\Output::i()->js( 'front_profile.js', 'core' ) );

И передавать данные в js?

Где данный js расположен

  • /js/front/controllers/profile/ips.profile.body.js
comment_173559
31 минуту назад, Zuldek сказал:

Ничего не помнимаю.

Естественно. Вы сейчас пытаетесь освоить объем знаний, к которому люди идут несколько лет и получают в итоге зряплату 150-200к. 

2. Этой командой в загрузку подключается созданный вами файл js

Данные в JS передаются только в виде параметров ajax запроса или в аттрибутах тега, который вызвал событие.

35 минут назад, Zuldek сказал:

Где данный js расположен

https://invisioncommunity.com/4guides/themes-and-customizations/javascript-framework/introduction-to-the-framework/file-structure-r35/

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Reply to this topic...

Recently Browsing 0

  • No registered users viewing this page.