These are chat archives for dru-io/Drupal

12th
Jan 2016
Alexandr.Poddubsky
@AlexandrPoddubsky
Jan 12 2016 08:54
всем добрый день
$form['#attached']['js'][] = array(
'type' => 'file',
'data' => $path . '/ffff.js',
'weight' => 10,
'every_page' => TRUE,
); почему js подрубается только на странице формы? чяднт
Andrew Berezovsky
@duozersk
Jan 12 2016 08:57
потому что этот #attached обрабатывается только когда форма рендерится
Alexandr.Poddubsky
@AlexandrPoddubsky
Jan 12 2016 09:12
спасибо. но форма рендерится в модалке. то есть по идее мне надо на клик аттачить свой js тогда? или как?
Andy Postnikov
@andypost
Jan 12 2016 09:14
Зависит от того, кто модалку выводит, ctools вот умеет мержить,
Смотри в сторону ajaxPageState
Alan Bondarchuk
@fortis
Jan 12 2016 09:20
есть хак) некоторые модули используют
Alexandr.Poddubsky
@AlexandrPoddubsky
Jan 12 2016 09:21
используется colorbox
Alan Bondarchuk
@fortis
Jan 12 2016 09:22

возвращают с разметкой в аяксе дополнительно еще нечто вроде

<head><script src="…."></script></head><body></body>

Alexandr.Poddubsky
@AlexandrPoddubsky
Jan 12 2016 09:23
ну то есть подключаю свой какой то js и в нем уже аттач делаю, так?
Alan Bondarchuk
@fortis
Jan 12 2016 09:23
нет просто в форме #suffix и там этот кусок хтмл
Alexandr.Poddubsky
@AlexandrPoddubsky
Jan 12 2016 09:24
спасибо. сейчас гляну что вы и энди подсказал.
Alan Bondarchuk
@fortis
Jan 12 2016 09:25
хотя у меня модалки чисто свои с #ajax и у меня подгружает то что аттачу
Alexandr.Poddubsky
@AlexandrPoddubsky
Jan 12 2016 09:27
мне нужно чтобы на всех страницах был свой js а не только на странице формы
точнее вызывался на всех страницах
Anton L. Safin
@als-studio
Jan 12 2016 09:28
А что мешает drupal_add_js в init модуля добавить?
Alexandr.Poddubsky
@AlexandrPoddubsky
Jan 12 2016 09:29
да вот некоторые обмазали фекалиями add_js и init а мне стало интересно, как сделать правильно с их слов. учится всегда приятно
Andrew Berezovsky
@duozersk
Jan 12 2016 09:33
^^ не надо перевирать мои слова
Alexandr.Poddubsky
@AlexandrPoddubsky
Jan 12 2016 09:39
^^@пуканотушитель у вас сработал? и не собираюсь перевирать, код ревью я вас не просил делать. ну сделали, спасибо. и не более, а если вам надо оплатить то пожалуйста, оплотим. плюс я спрашивал в чатике, по делу и не переходил на личности и не оскорблял. я думаю и закончим на этом, я не обидчивый. возраст не позволяет обижаться на молодежь
Andrew Berezovsky
@duozersk
Jan 12 2016 09:45
да что вы всё время в бутылку лезете :) говорите про код, не нужно художественных изысков… применительно ко фразе выше - никто ничего фекалиями не мазал
Alan Bondarchuk
@fortis
Jan 12 2016 09:53
не думаю что инит выполняемый в аяксе подключит скрипт
если же нужно на всех страницах подключать то это другой хук page alter / page build
Max Khabibullin
@KhabibullinMax
Jan 12 2016 10:03
Что-то у меня затык с forms api 7-ки
$form['field_responsible_tech']['#default_value'] = $user->uid;
верно же дефолтное значение указываю в hook_form_alter ?
Ivan
@Chi-teck
Jan 12 2016 10:06
@KhabibullinMax вроде верно, хотя зависит от типа элемента (field_responsible_tech)
Max Khabibullin
@KhabibullinMax
Jan 12 2016 10:08
select там
Ivan
@Chi-teck
Jan 12 2016 10:09
$user это текущий пользователь?
возможно global $user нет
Max Khabibullin
@KhabibullinMax
Jan 12 2016 10:10
да, перед этим global $user присутствует
=)
проверил на другом поле с селектом $form['field_status_comment']['#default_value'] = 3; - тоже не работает
Ivan
@Chi-teck
Jan 12 2016 10:11
а вообще форма алтерится?
Max Khabibullin
@KhabibullinMax
Jan 12 2016 10:11
получается, что проблема может быть только с указанием $form_id ? )
Ivan
@Chi-teck
Jan 12 2016 10:11
& перед $form стоит?
Max Khabibullin
@KhabibullinMax
Jan 12 2016 10:11
да, конечно
Max Khabibullin
@KhabibullinMax
Jan 12 2016 10:17
не пойму в чем еще может быть проблема, from_id проверил
Andrew Berezovsky
@duozersk
Jan 12 2016 10:19
у селекта дефолтное значение задается не в виде массива?
Ivan
@Chi-teck
Jan 12 2016 10:19
попробуй что нибудь другое в форме поменять, например тайтл
 $form['field_status_comment']['#title'] = 'New title;
Andrew Berezovsky
@duozersk
Jan 12 2016 10:19
типа array(3 => 3)
Ivan
@Chi-teck
Jan 12 2016 10:19
@duozersk нет вроде
Max Khabibullin
@KhabibullinMax
Jan 12 2016 10:23
оп-па
похоже форма не альтерится тупо
странно, обычная форма комментирования
Ivan
@Chi-teck
Jan 12 2016 10:30
возможно алтер хук вообще не вызывается
Alan Bondarchuk
@fortis
Jan 12 2016 10:31
нет, не верно
у полей другая структура там еще LANGUAGE_NONE и 0
Ivan
@Chi-teck
Jan 12 2016 10:36
если это поле то тогда hook_field_widget_WIDGET_TYPE_form_alter() наверно предпочтительней
Alan Bondarchuk
@fortis
Jan 12 2016 11:05
наверно у него не виджет
хотя хз, поле то и в форме может быть, после форматтера
Ivan
@Punk-UnDeaD
Jan 12 2016 11:49
научу запускать отладчик, дорого
научу смотреть вкладку сетевых подключений в вебинспекторе, очень дорого
Andrew Berezovsky
@duozersk
Jan 12 2016 11:50
@Punk-UnDeaD что такое антипанели?
Ivan
@Punk-UnDeaD
Jan 12 2016 12:05
это как панели, с контекстами, пейнами, роутингом, цепочками вариантов
но антипанели
у меня ещё есть антироутинг для 7 друпала и антиформы
Andrew Berezovsky
@duozersk
Jan 12 2016 12:21
так а зачем нужны-то, когда есть панели?
Ivan
@Punk-UnDeaD
Jan 12 2016 12:22
ну если присмотреться, там рендерятся твиг шаблоны
что даёт серьёзный прирост производительности, например
панели нужны для тыканья в админке
Gor Martsen
@Gormartsen
Jan 12 2016 13:36
@Punk-UnDeaD
То есть основной прирост за счёт твига?
Или еще что?
Всем привет
Ivan
@Punk-UnDeaD
Jan 12 2016 13:37
не грузится всё то. что грузится для панелей
Gor Martsen
@Gormartsen
Jan 12 2016 13:38
А у антироутинга?
Ivan
@Punk-UnDeaD
Jan 12 2016 13:38
там два момента
он статический и чуть быстрее нативного
нативный в базу лезет, а мой на симфони компонентах и кешируется в код
Gor Martsen
@Gormartsen
Jan 12 2016 13:39
Чуть быстрее это сколько? Или зависит?
Ivan
@Punk-UnDeaD
Jan 12 2016 13:39
и мой не запускает весь бутстрап
Gor Martsen
@Gormartsen
Jan 12 2016 13:39
А понял идею
Ivan
@Punk-UnDeaD
Jan 12 2016 13:39
чуть быстрее - на полмилисекунды
но там основной проект, на котором всё основано - submodules
это возможность не создавая новых модулей писать обособленный код. который будет автоподгружаться
в семёрке нет ни обособленности, ни автоподгрузки
в восьмёрке и то и другое есть, но не так хорошо, как хотелось бы
Gor Martsen
@Gormartsen
Jan 12 2016 13:44
Хм. Ок
Спс за ответы
Кстати такая любопытная инфа - автопогрузка классов не имеет смысла на сервере с mod_php + opcode кешером
Ivan
@Punk-UnDeaD
Jan 12 2016 13:48
<?php

namespace d\improvement\debug_info;

use Drupal\Component\Utility\Timer;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;

/**
 * @event kernel.request
 * @priority 9999
 */
function onRequest() {
  Timer::start(__NAMESPACE__);
}

/**
 * @event kernel.response
 * @param FilterResponseEvent $event
 */
function onResponse(FilterResponseEvent $event) {
  $response = $event->getResponse();
  if ('text/html; charset=UTF-8' === $response->headers->get('content-type')) {
    $response->setContent($response->getContent() . '<!-- Page execution time was ' . Timer::read(__NAMESPACE__) . ' ms-->');
  }
  $response->headers->set('page-execution-time', Timer::read(__NAMESPACE__));
}
вот код сабмодуля для восьмёрки
это отдельный файл, который автоматически находится и подключается
больше ничего нет, всю обвязку генерит модуль
opcode кешер бывает пустым после перезапуска
автоподгрузка нужна
Gor Martsen
@Gormartsen
Jan 12 2016 13:51
Уточню - автопогрузка - находит код и грузит или грузит по требованию?
Что именно решается?
Для чего юзается?
Ivan
@Punk-UnDeaD
Jan 12 2016 13:53
автоподгрузка подключает файл с классом по имени класса, если класс не загружен
соответственно можно не подгружать классы полностью заранее
а просто использовать
Gor Martsen
@Gormartsen
Jan 12 2016 13:54
Ну вот. Я и говорю что не имеет смысла экстра код проверки. Лучше просто включать.
Ivan
@Punk-UnDeaD
Jan 12 2016 13:54
и как только класс будет использован впервые, автоподгрузчик его подгрузит
Gor Martsen
@Gormartsen
Jan 12 2016 13:54
Ну то таке.
Ivan
@Punk-UnDeaD
Jan 12 2016 13:54
так никто не проверяет, то пых всё сам делает
там ещё затраты по памяти есть, когда классы реально подгружены
но я лично это не замерял
Gor Martsen
@Gormartsen
Jan 12 2016 13:59
Та вот в том и прикол что они так или иначе и так уже в памяти:)
Если опкод кеширование включено
Ivan
@Punk-UnDeaD
Jan 12 2016 14:00
код да, в общей памяти
статические поля классов нет, и такое прочее
Gor Martsen
@Gormartsen
Jan 12 2016 14:01
Пример дай
И интересно что еще кроме статических полей?
И они точно не на этапе инициализации объекта а не подгоузки класс память получают?
Ivan
@Punk-UnDeaD
Jan 12 2016 14:02
я в недра не лез, я чисто логически
если есть статические поля классов, они занимают память
значит они занимают разную память
и эта память не от опкеша
Gor Martsen
@Gormartsen
Jan 12 2016 14:03
Ну для меня логически что память под статические поля выделяется в границе объекта класса а не на моменте компиляции и подгрузки файла класса
Ivan
@Punk-UnDeaD
Jan 12 2016 14:03
значит для управления доступом к этой памяти должны быть в памяти инстанса указатели
статические переменные доступны без создания объекта
я не готов говорить, сколько именно там тратится и какой выигрыш от опкеша, но точно тратится
Gor Martsen
@Gormartsen
Jan 12 2016 14:05
Надо будет почитать порыться в исходник ах и глянуть где именно они.
В любом случае имхо что с авто лоадеров что без - класс грузишь на момент когда надо
Ivan
@Punk-UnDeaD
Jan 12 2016 14:06
даже если файл в опкеше, класс недоступен до инклуда
это я точно знаю
Gor Martsen
@Gormartsen
Jan 12 2016 14:07
Верно. Но с опкешем сам инклуд - это возврат адреса в памяти а не чтение файла с диска
Ivan
@Punk-UnDeaD
Jan 12 2016 14:08
ну да, там лишь на парсинге файла экономия
опять же, файл устареть может
иначе бы мы не могли вести разработку, если б все классы в памяти лежали, а не пересчитывались обновлённые с диска
Gor Martsen
@Gormartsen
Jan 12 2016 14:09
Ну понятно сто при expire и первом чтении - оно с диска берет
И в зависимости от кешера - обновляет при изменении файла
Но что с автолоадером что без него ( чисто require_once) - одинаково будет дергаться диск при первом и с памяти при втором
Каким автолоадером пользуешься?
Ivan
@Punk-UnDeaD
Jan 12 2016 14:11
компосером
Gor Martsen
@Gormartsen
Jan 12 2016 14:11
Код смотрел?
Ivan
@Punk-UnDeaD
Jan 12 2016 14:11
в семёрке я сам по карте классов подгружал, а в восьмёрке карту компосеру скидывал
особо не всматривался. но на мой взгляд два автоподгрузчика хуже, чем один
Gor Martsen
@Gormartsen
Jan 12 2016 14:13
Ну суть моего сообщения в том, что автолоадер излишнее (за исключением упрощения кода поиска и подгрузки класс а файла вместо ручного require_once) при наличии опкеша
Ну и извратив с пере определением класса за счёт подмены в логике поиска файла класса
Ivan
@Punk-UnDeaD
Jan 12 2016 14:15
ну если у нас собрана полная карта классов, то ничего особо не ищется
а просто включается. как есть
а накладные расходы на подключение автолоадером 10% классов против безусловного подключения всех 100% надо ещё сравнить
Gor Martsen
@Gormartsen
Jan 12 2016 14:15
Ладно проехали
Ivan
@Punk-UnDeaD
Jan 12 2016 14:16
опять же, просто из списка классов нельзя выяснить, в каком порядке их подключать
Vitaliy VVS
@vistar
Jan 12 2016 20:44
http://drupalstyle.ru/
Это такой тонкий троллинг? Шаблоны Drupal на сайте на WP?
Alexander Dubovskoy
@adubovskoy
Jan 12 2016 20:57
да просто зарабатывают на рефералке с темлейтмонстра
там уж неважно на чем)
Vitaliy VVS
@vistar
Jan 12 2016 20:58
да это не ТМ: http://drupalstyle.ru/color-glass/, а чисто d.org