Toly
Anonymous
Anonymous
Метод on не статический. Неправильно вызываете
А как правильно?
Попробую снова описать задачу:
Есть несколько независимых модулей которые включаются/отключаются пользователем в админке.
Само собой в конфиге они все включены, но при инициализации мы определяем включен ли модуль.
Если включен, нам нужно повесить обработчик событий.
Как реализовать?
Toly
Ну вот смотри
Toly
Ты написал, что событие инициируешь у объекта Yii::$app
Toly
А пытаешься поймать его в модуле
Toly
Дай пару минут, напишу пример
Toly
Если ты инициируешь событие у Yii::$app, то и обработчик нужно вешать туда же:
Yii::$app->on('event1', function($event) {echo 'event1';});
Yii::$app->trigger('event1');
Toly
Но если у тебя событие имеет прямое отношение к конкретному модулю, можно сделать лучше
Toly
События в Yii можно повесить на весь класс / интерфейс, а не только на его инстанс
Toly
В модуле:
Event::on(static::class, 'event1', function() {echo 'event1';});
Чтобы вызвать событие:
Event::trigger(MyModule::class, 'event1'(;
Toly
Конец
Anonymous
Спасибо за развёрнутый ответ. буду пробовать :)
Toly
https://github.com/yiisoft/yii2/blob/master/docs/guide-ru/concept-events.md
Anonymous
в документации всё описано в контексте компонентов, а у меня модули. Может это конечно и не важно, но пока не заставил работать(
Toly
Модуль - это тоже компонент
Toly
Module -> ServiceLocator -> Component -> Object
Anonymous
блин, у меня по все видимости модуль даже не инициализируется. поэтому что бы я не делал, обработчики не вешаются.
Anonymous
по все видимости нужен какой то модуль управления модулями(не очень звучит) :)
который будет всё это разруливать.
Toly
Модуль можно прописать в bootstrap, чтобы он инициализировался
Toly
На уровне конфигурации или даже в composer.json
Anonymous
Anonymous
спасибо)
Toly
Пожалуйста
Dmitry
такой вопрос, есть аякс запрос к методу и там отдаю файл:
Yii::app()->getRequest()->sendFile($filename, $content, "text/csv", false);
как его принять и открыть аяксом? Или можно как-то ссылку сгенерить
Antony
sendFile вроде как нужен для force download.
Ты можешь отдавать содержимое файла сразу, прочитав его file_get_contents к примеру
Dmitry
Нашел короче как аяксом принять и открыть это файл)
who are you
ну и как? это сделать
Vitalii
но лучше так не делать :)
Vitalii
файлы должен отдавать сервер статики. Иначе память будет просто улетать от такое реализации :)
who are you
если файл отдавать потоком то проблем не должно быть
who are you
ну то бишь прочитали кусок и отдали и так далее а не весь файл в память и отдавать
Antony
Я бы просто ajax'ом сразу читал содержимое csv, в обход роутов.
Через роут если нужна проверка прав пользователя на доступ.
Toly
readfile() в php вам подойдет. Ну а вообще, я бы натравил nginx просто на него
Dmitry
https://github.com/henrya/js-jquery/tree/master/BinaryTransport
Dmitry
вот это заюзал
Dmitry
так сразу файл скачивается после ответа контроллера
Dmitry
Наверное костыль, но сойдет в этой ситуации)
Antony
вот это заюзал
А Yii нужно для прав доступа к файлу?
Если нет то лучше пусть nginx отдает файлы.
Можно location.href установить для открытия файла.
Dmitry
Dmitry
и получается оно даже файл не сохраняет, на лету создается же
Artur
Как врубить cors ?
прописал в бехавиорс это:
public function behaviors()
{
return \yii\helpers\ArrayHelper::merge(parent::behaviors(), [
'corsFilter' => [
'class' => \yii\filters\Cors::className(),
'cors' => [
// restrict access to
'Origin' => ['http://localhost', 'https://localhost'],
'Access-Control-Request-Method' => ['POST', 'PUT', 'GET'],
// Allow only POST and PUT methods
'Access-Control-Request-Headers' => ['X-Wsse'],
// Allow only headers 'X-Wsse'
'Access-Control-Allow-Credentials' => true,
// Allow OPTIONS caching
'Access-Control-Max-Age' => 3600,
// Allow the X-Pagination-Current-Page header to be exposed to the browser.
'Access-Control-Expose-Headers' => ['X-Pagination-Current-Page'],
],
``
],
]);
}
Не помогло, выжает ошибку
XMLHttpRequest cannot load https://api.dilema.me/api/v1/users/expert?offset=0&limit=20. The 'Access-Control-Allow-Origin' header contains multiple values 'http://localhost, : *', but only one is allowed. Origin 'http://localhost' is therefore not allowed access.
Anonymous
ммм
Anonymous
public function behaviors()
{
$behaviors = parent::behaviors();
unset($behaviors['authenticator']);
$behaviors['corsFilter'] = [
'class' => Cors::className(),
];
$authAction = $this->authAction();
if ($authAction && !$this->isOptions()) {
$behaviors['authenticator'] = [
'class' => HttpBearerAuth::className(),
'only' => $authAction,
'except' => ['options'],
];
}
return $behaviors;
}
Antony
и получается оно даже файл не сохраняет, на лету создается же
А к чему тогда
Yii::app()->getRequest()->sendFile($filename, $content, "text/csv", false);
Я так понимаю sendFile требует наличия физически файла.
В случае с csv он не такой уж большой по объему, можно обойтись без BinaryTransport кмк.
dataType: 'html'
В контроллере FORMAT_RAW
И по идее точно так же результат можно упаковать через URL.createObjectUrl
Artur
Vitalii
https://vk.com/landingcrm?w=wall-140428863_7
😂
Andrey
Спам пошёл)
Андрей
Не, это свои )
Andrey
))
Andrey
Вот эта фраза конечно улыбает - "В команду молодого проекта требуются специалисты, готовые работать за опыт." 😄
Сидредин
За опыт можно и свои проекты делать.)
Андрей
В команде другой опыт, это нельзя сравнивать.
Aleksandr
Андрей
Это я как человек, который никогда не работал в команде говорю )
Aleksandr
а я как человек по всякому поработавший, подтверждаю: опыт своих проектов и опыт работы в команде (особенно в команде в офисе) - это опыт разных плоскостей
👀
Ты будешь в одной команде с теми, чей доход превышает 1000$/мес.
Что это значит? Я-бы поработал с теми, кто имеет вес в opensource сообществе, а не получает много денег. Особенно ценность этой фразы падает в контексте работы "за еду"
Амаль
Нужен совет
Амаль
Подбираю cms для студии
Амаль
Хотим выбрать путь менее ухабистый.
Амаль
Требования: мультиязычность контент и интерфейс, модульность, простота в освоении
Artur
umi
Artur
?
Амаль
На yii2
Artur
а. хз, таких не знаю
Амаль
Есть варианты skeeks и dotplant
Амаль
Но пока в не совсем то. Если ничего не найду придеться выбирать
Anonymous
https://www.zfort.com/blog/yii2-modules-extensions-on-github/
Дмитрий Житких
Не подскажите как настрой phpstorm на удаленный сервер (ftp ssh)
Дмитрий Житких
?
Дмитрий Житких
Или что с сервером сделать , я админ а не программист
Амаль
Anonymous
Anonymous
Деплой по современному.
Дмитрий Житких
То-есть что , все локально ?
Anonymous
Разрабатываешь локально, пушишь в удалённый Git репозиторий, по web hook'у деплоишь на сервере (ну или ещё по какому-либо хуку).
Anonymous
Ну или в Docker всё это засунуть.
Anonymous
Статьи в сети есть.
Дмитрий Житких
Так я умею :) не тот подход я понял ;) спасибо
Anonymous