Skip to content

Commit 82c77a5

Browse files
authored
Русская документация
1 parent bdd6ad8 commit 82c77a5

File tree

1 file changed

+164
-0
lines changed

1 file changed

+164
-0
lines changed

README.ru.md

Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
# AjaxSubmitButton для Yii 2
2+
=====================================
3+
4+
[![Latest Stable Version](https://poser.pugx.org/demogorgorn/yii2-ajax-submit-button/v/stable)](https://packagist.org/packages/demogorgorn/yii2-ajax-submit-button)
5+
[![Total Downloads](https://poser.pugx.org/demogorgorn/yii2-ajax-submit-button/downloads)](https://packagist.org/packages/demogorgorn/yii2-ajax-submit-button)
6+
[![License](https://poser.pugx.org/demogorgorn/yii2-ajax-submit-button/license)](https://packagist.org/packages/demogorgorn/yii2-ajax-submit-button)
7+
[![Monthly Downloads](https://poser.pugx.org/demogorgorn/yii2-ajax-submit-button/d/monthly)](https://packagist.org/packages/demogorgorn/yii2-ajax-submit-button)
8+
[![Yii2](https://img.shields.io/badge/Powered_by-Yii_Framework-green.svg?style=flat)](http://www.yiiframework.com/)
9+
10+
11+
AjaxSubmitButton это достаточно полезный и мощный виджет для создания ajax кнопки любой сложности, в т.ч. для работы с ActiveForm, обычной формой либо для использования в качестве самостоятельного элемента. Является аналогом ajaxSubmitButton в Yii1, но имеет ряд особенностей и полезных функций.
12+
13+
### Базовый пример
14+
15+
Использование с произвольным виджетом в обычной форме (в данном случае произвольный виджет - Select2).
16+
17+
Представление (view):
18+
```php
19+
use demogorgorn\ajax\AjaxSubmitButton;
20+
21+
<?php echo Html::beginForm('', 'post', ['class'=>'uk-width-medium-1-1 uk-form uk-form-horizontal']); ?>
22+
23+
<?= Select2::widget([
24+
'name' => 'country_code',
25+
'data' => Country::getAllCountries(),
26+
'options' => [
27+
'id' => 'country_select',
28+
'multiple' => false,
29+
'placeholder' => 'Choose...',
30+
'class' => 'uk-width-medium-7-10']
31+
]);
32+
?>
33+
34+
<?php AjaxSubmitButton::begin([
35+
'label' => 'Check',
36+
'ajaxOptions' => [
37+
'type'=>'POST',
38+
'url'=>'country/getinfo',
39+
'success' => new \yii\web\JsExpression('function(html){
40+
$("#output").html(html);
41+
}'),
42+
],
43+
'options' => ['class' => 'customclass', 'type' => 'submit'],
44+
]);
45+
AjaxSubmitButton::end();
46+
?>
47+
48+
<?php echo Html::endForm(); ?>
49+
50+
<div id="output"></div>
51+
```
52+
53+
> Обратите внимание: элемент с id #output - это элемент, содержимое которого будет обновлено при удачном выполнении ajax запроса.
54+
55+
Контроллер (controller):
56+
```php
57+
public function actionGetinfo()
58+
{
59+
if(!isset($_POST['country_code']) || empty($_POST['country_code']))
60+
return;
61+
62+
$code = $_POST['country_code'];
63+
64+
return $this->renderAjax('resultwidget', ['code' => $code]);
65+
}
66+
```
67+
68+
### Пример использования с ActiveForm и включенной клиентской валидацией (client validation)
69+
70+
Представление:
71+
```php
72+
$form = ActiveForm::begin([
73+
'id' => 'add-form',
74+
'options' => ['class' => 'form-inline'],
75+
]);
76+
77+
...
78+
79+
AjaxSubmitButton::begin([
80+
'label' => 'Add',
81+
'useWithActiveForm' => 'add-form',
82+
'ajaxOptions' => [
83+
'type' => 'POST',
84+
'success' => new \yii\web\JsExpression("function(data) {
85+
if (data.status == true)
86+
{
87+
closeTopbar();
88+
}
89+
}"),
90+
],
91+
'options' => ['class' => 'btn btn-primary', 'type' => 'submit', 'id' =>'add-button'],
92+
]);
93+
AjaxSubmitButton::end();
94+
95+
ActiveForm::end()
96+
```
97+
98+
> Как видите использовать виджет с ActiveForm очень легко и просто - достаточно задать параметр id у ActiveForm, а также в параметре 'useWithActiveForm' указать id данной формы. (В данном примере id равен 'add-form', без символа '#'!).
99+
100+
101+
### Клинтская валидация (Client validation)
102+
103+
Как я указал выше, виджет может быть использован с ActiveForm с включенной клиентской валидацией (см. пример выше). Если вы хотите отключить валидацию на клиенте, установите параметру 'enableClientValidation' значение равное 'false'.
104+
105+
```php
106+
$form = ActiveForm::begin([
107+
'id' => 'filters-form',
108+
'enableClientValidation' => false
109+
]);
110+
```
111+
112+
### Использование Preloader
113+
114+
Виджет можно использовать с произвольным preloader.
115+
116+
```php
117+
<?php AjaxSubmitButton::begin([
118+
'label' => 'Check',
119+
'ajaxOptions' => [
120+
'type'=>'POST',
121+
'url'=>'country/getinfo',
122+
'beforeSend' => new \yii\web\JsExpression('function(html){
123+
... show preloader...
124+
}'),
125+
'success' => new \yii\web\JsExpression('function(html){
126+
... hide preloader ...
127+
}'),
128+
],
129+
'options' => ['class' => 'customclass', 'type' => 'submit'],
130+
]);
131+
AjaxSubmitButton::end();
132+
?>
133+
```
134+
135+
### Опции виджета
136+
137+
Параметр | Описание | Тип
138+
------------ | ------------- | -------------
139+
ajaxOptions | опции ajax запроса | Array
140+
options | HTML атрибуты и другие опции тега контейнера для виджета | Array
141+
tagName | имя тега для генерации кнопки (по умолчанию используется 'button'. Вы можете использовать, например, тег 'a') | String
142+
label | Текст кнопки | String
143+
encodeLabel | должен ли текст кнопки быть HTML-кодирован | Boolean
144+
clickedButtonVarName | имя объекта js. Не используется (игнорируется), когда параметр useWithActiveForm задан | String
145+
useWithActiveForm | должна ли кнопка использоваться в связке с ActiveForm. Указывается id ActiveForm, либо false, если не планируется использовать | Boolean / String
146+
147+
## Установка
148+
------------
149+
150+
The preferred way to install this extension is through [composer](http://getcomposer.org/download/).
151+
152+
Either run
153+
154+
```
155+
php composer.phar require demogorgorn/yii2-ajax-submit-button "*"
156+
```
157+
158+
or add
159+
160+
```
161+
"demogorgorn/yii2-ajax-submit-button": "*"
162+
```
163+
164+
to the require section of your `composer.json` file and run `composer update`.

0 commit comments

Comments
 (0)