Jump to content

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


Zuldek

Recommended Posts

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

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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

<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>

Link to comment
Share on other sites

data-ipsdialog-size='narrow'  data-ipsdialog-width="70"

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

Link to comment
Share on other sites

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

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

и в data-ipsdialog-size='my200'

Link to comment
Share on other sites

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

dsz.png

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

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

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

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

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

Link to comment
Share on other sites

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

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

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

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

}

 

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

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

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

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

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

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

Link to comment
Share on other sites

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

$form = new \IPS\Helpers\Form;

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

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

Link to comment
Share on other sites

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

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

 

Link to comment
Share on other sites

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

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

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

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

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

Link to comment
Share on other sites

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

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


 

Link to comment
Share on other sites

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

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

console.log('ss');

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

define( 'IN_DEV', TRUE );

 

Link to comment
Share on other sites

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

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
Link to comment
Share on other sites

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/

Link to comment
Share on other sites

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...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Ваша ссылка была автоматически строена.   Отображать как обычную ссылку

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...