alhimik1986 / yii2_js_view_module
该模块允许您将最常用的JavaScript代码以指定预设的形式插入到您的页面中。
Requires
- php: >=5.4.0
This package is auto-updated.
Last update: 2024-08-29 05:00:08 UTC
README
这是一个为yii2-crud-module设计的辅助模块。允许您通过指定的参数加载JavaScript插件。从行为上看,它类似于小部件,但它与小部件的不同之处在于,它不会输出HTML代码,而只会加载带有指定参数的JavaScript文件和JavaScript视图。
让我们以日期选择器datepicker(jQuery-ui模块)为例。通过小部件加载它需要更多的代码,如果有很多这样的小部件(例如,相同类型的日历或类似的小部件),则可能会影响性能。因此,我们想到为日历设置一个类(例如 .ui-datepicker)并使用命令 $('.ui-datepicker').datepicker(); 现在我们想到的是,我们不想为此使用小部件,而想在小部件中完成这项工作,但这里又出现了问题:视图需要放置在一个公共位置,并从框架的不同模块中调用它,指定相应的参数,例如,选择器 '.ui-datepicker' 和日历参数 { dateFormat: 'dd-mm-yy' }。因此,这就是为什么需要yii2-js-view-module的原因。
创建自定义js_view的示例
在文件components/JSPlugins.php中,有调用js视图的示例,被注释包围。其中大多数已不存在,因为它们已用于我过去的某个项目,但我保留了它们,因为它们是js视图应该如何调用的一个好例子。以下是一个例子
Yii::$app->view->registerJs(alhimik1986\yii2_js_view_module\components\JSPlugins::includePlugins([
'formatter' => [
[
'selector' => '.date-formatter',
'options' => [
'pattern' => '{{D9}}.{{M9}}.{{9999}}',
],
],
[
'selector' => '.credit-card-formatter',
'options' => [
'pattern' => '{{9999}}-{{9999}}-{{9999}}-{{9999}}',
],
]
],
'ajaxTable' => [ // Подключить вспомогательные скрипты для поиска в ajax-таблице
[
'tbl_selector' => '#ajax-table', // Селектор ajax-таблицы для поиска
'search_url' => \yii\helpers\Url::to(['search']), // url-адрес, куда отправлять искомые данные
'search_request_type' => 'post', // Тип запроса при поиске в таблице
'search_on_change_selector' => '.search-on-change', // Селектор элементов, при изменении или нажатии клавиш которых осуществлять поиск
'search_on_change_dateSelector' => '.from-date, .to-date', // Селектор элементов, при изменении которых осуществлять поиск
'tooltip_selector' => '', // Селектор для всплывающей подсказки при обновлении ajax-таблицы
'loading_img' => '', // url-адрес индикатора загрузки
'error_selector' = '#errors', // Место, куда будут выводиться нестандартные ошибки валидации
'ajaxDataCallBack' => 'js:function(data){return data;}', // Пост-обработка данных для поиска перед отправкой ajax-запроса (например, чтобы втиснуть в поиск диапазон дат from_date и to_date)
'afterSuccessCallBack' => 'js:function(data){}', // Дополнительные операции при успешном запросе (в поиске)
],
],
]));
这里数组的键:“formatter”和“ajaxTable”是视图文件的名称,它们存储在views/jsPlugins文件夹中。数组的值是传递给相应视图的参数。进入views/jsPlugins文件夹,视图的名称具有前缀“_”(下划线),表明它是一个部分视图。一个很好的简单示例可以在视图 _formatter.php 中看到,参数(PARAMETERS)传递给视图存储在变量 "$plugin_params" 中。
目前有一个缺点:将自定义视图存储在“vendor”文件夹中并不完全正确,因此该模块将是yii2-crud-module的辅助模块。
安装
使用composer下载。在应用程序的文件夹中的composer.json文件中添加一行
"require": {
"alhimik1986/yii2_js_view_module": "^1.0"
},
或者在命令行中输入
$ composer require alhimik1986/yii2_js_view_module