
Ilya
15.02.2017
16:05:47
На данный момент нет возможности, поэтому и пишу суда

Aleksandr
15.02.2017
16:06:24

Ilya
15.02.2017
16:06:32
?
Юмористов в этой конфе так не хватало, что просто хочется подождать ответа других

Google

Artur
15.02.2017
16:08:34
я так понял, что можно

Ilya
15.02.2017
16:08:52
Потестил или как?

Artur
15.02.2017
16:09:11
нет, по его словам

Zhandos
16.02.2017
06:17:50
Кто нибудь делал проект со стримингом видео?

Sergey
16.02.2017
06:38:06

Zhandos
16.02.2017
06:38:56
На чем такие проекты делаются?

Sergey
16.02.2017
06:39:11
Nginx rtmp
Сейчас бесплатных альтернатив ему нет

Andrey
16.02.2017
07:02:54
Консольный vlc

SiZE
16.02.2017
07:24:06
RSTP + webrtc где-то статья была на ГТ по видеонаблюдению помоему

Sergey
16.02.2017
08:23:31
Ребят такой вопрос:
Как правильно организовать обработку событий?
Есть два модуля, первый вызывает какое то событие через \Yii::$app->trigger('eventName')
А второй модуль должен это событие отловить и в зависимости от своих настроек обработать его или пропустить "мимо ушей"
соль в том что модули подключаются динамические.
т.е. в конфиге все модули будут описаны, а вот будет ли модуль работать(и обрабатывать события) зависит от того включен ли он в админ. панели
пробовал такую конструкцию при инициализации второго модуля.
public function init()
{
if($this->moduleEnabled) {
self::on('cart.create', 'createCartHandler');
parent::init();
}
}
но ничего не произошло

Google

Sergey
16.02.2017
08:34:11

Sergey
16.02.2017
08:35:12
это заготовка, если модуль отключен в админке, зачем мне вообще что то с ним делать?

Sergey
16.02.2017
08:35:32
потому что он может наследоваться от другого модуля?

Sergey
16.02.2017
08:35:54
он не наследуется от другого модуля :)

Sergey
16.02.2017
08:36:03
тогда откуда у него parent

Sergey
16.02.2017
08:36:35
autogenerated
в любом случае это не касается моего вопроса

Sergey
16.02.2017
08:37:05
ну ладно, это эстетическое, в java parent:: должен вообще первой функцией вызываться
а по твоему вопросу - откуда взялась запись self::on

Sergey
16.02.2017
08:37:46
из документации

Sergey
16.02.2017
08:37:56
можно ссылку?

Sergey
16.02.2017
08:38:54
можно ссылку?
погоди, тебе есть чем помочь?
или мы будем обсуждать эстетику кода?

Sergey
16.02.2017
08:39:53
и сравни с тем что у тебя написано

Sergey
16.02.2017
08:41:00
в доку отправить может каждый, думаю каждый с неё и начинает
но теория - одно, а практическое применение - совсем другое
вопрос был именно к тем кто применял это на практике

Sergey
16.02.2017
08:43:50

Sergey
16.02.2017
08:45:05

Google

Sergey
16.02.2017
08:46:30
давай переформулирую вопрос:
как повесить обработчик событий при инициализации модуля? не в конфиге!! а именно в методе инициализации модуля
а вообще забей)
повешу обработчики в конфиге, а потом просто буду проверять включен ли модуль
да не, фигня идея)
Yii поразительный фреймворк который так и просит наговнякать))

Anatoly
16.02.2017
09:04:55

Sergey
16.02.2017
09:05:42
Метод on не статический. Неправильно вызываете
А как правильно?
Попробую снова описать задачу:
Есть несколько независимых модулей которые включаются/отключаются пользователем в админке.
Само собой в конфиге они все включены, но при инициализации мы определяем включен ли модуль.
Если включен, нам нужно повесить обработчик событий.
Как реализовать?

Anatoly
16.02.2017
09:09:14
Ну вот смотри
Ты написал, что событие инициируешь у объекта Yii::$app
А пытаешься поймать его в модуле
Дай пару минут, напишу пример
Если ты инициируешь событие у Yii::$app, то и обработчик нужно вешать туда же:
Yii::$app->on('event1', function($event) {echo 'event1';});
Yii::$app->trigger('event1');
Но если у тебя событие имеет прямое отношение к конкретному модулю, можно сделать лучше

Anatoly
16.02.2017
09:14:09
События в Yii можно повесить на весь класс / интерфейс, а не только на его инстанс
В модуле:
Event::on(static::class, 'event1', function() {echo 'event1';});
Чтобы вызвать событие:
Event::trigger(MyModule::class, 'event1'(;
Конец

Sergey
16.02.2017
09:16:46
Спасибо за развёрнутый ответ. буду пробовать :)

Anatoly
16.02.2017
09:17:34
https://github.com/yiisoft/yii2/blob/master/docs/guide-ru/concept-events.md

Sergey
16.02.2017
09:18:55
в документации всё описано в контексте компонентов, а у меня модули. Может это конечно и не важно, но пока не заставил работать(

Anatoly
16.02.2017
09:19:10
Модуль - это тоже компонент
Module -> ServiceLocator -> Component -> Object

Google

Sergey
16.02.2017
09:20:29
блин, у меня по все видимости модуль даже не инициализируется. поэтому что бы я не делал, обработчики не вешаются.
по все видимости нужен какой то модуль управления модулями(не очень звучит) :)
который будет всё это разруливать.

Anatoly
16.02.2017
09:22:32
Модуль можно прописать в bootstrap, чтобы он инициализировался
На уровне конфигурации или даже в composer.json

Sergey
16.02.2017
09:22:57

Admin
ERROR: S client not available

Sergey
16.02.2017
09:23:05
спасибо)

Anatoly
16.02.2017
09:23:19
Пожалуйста

Dmitry
17.02.2017
13:58:21
такой вопрос, есть аякс запрос к методу и там отдаю файл:
Yii::app()->getRequest()->sendFile($filename, $content, "text/csv", false);
как его принять и открыть аяксом? Или можно как-то ссылку сгенерить

Antony
17.02.2017
14:01:14
sendFile вроде как нужен для force download.
Ты можешь отдавать содержимое файла сразу, прочитав его file_get_contents к примеру

Dmitry
17.02.2017
14:20:28
Нашел короче как аяксом принять и открыть это файл)

Konstantin
17.02.2017
14:21:13
ну и как? это сделать

Виталий
17.02.2017
14:23:23
но лучше так не делать :)
файлы должен отдавать сервер статики. Иначе память будет просто улетать от такое реализации :)

Konstantin
17.02.2017
14:24:53
если файл отдавать потоком то проблем не должно быть
ну то бишь прочитали кусок и отдали и так далее а не весь файл в память и отдавать

Antony
17.02.2017
14:28:43
Я бы просто ajax'ом сразу читал содержимое csv, в обход роутов.
Через роут если нужна проверка прав пользователя на доступ.

Anatoly
17.02.2017
14:33:24
readfile() в php вам подойдет. Ну а вообще, я бы натравил nginx просто на него

Dmitry
17.02.2017
14:37:08
https://github.com/henrya/js-jquery/tree/master/BinaryTransport
вот это заюзал

Google

Dmitry
17.02.2017
14:38:45
Наверное костыль, но сойдет в этой ситуации)

Antony
17.02.2017
14:39:58
вот это заюзал
А Yii нужно для прав доступа к файлу?
Если нет то лучше пусть nginx отдает файлы.
Можно location.href установить для открытия файла.

Dmitry
17.02.2017
14:40:46
и получается оно даже файл не сохраняет, на лету создается же


Artur
17.02.2017
14:47:37
Как врубить 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.


ivphpan
17.02.2017
14:48:00
ммм
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
17.02.2017
14:49:28
и получается оно даже файл не сохраняет, на лету создается же
А к чему тогда
Yii::app()->getRequest()->sendFile($filename, $content, "text/csv", false);
Я так понимаю sendFile требует наличия физически файла.
В случае с csv он не такой уж большой по объему, можно обойтись без BinaryTransport кмк.
dataType: 'html'
В контроллере FORMAT_RAW
И по идее точно так же результат можно упаковать через URL.createObjectUrl

Artur
17.02.2017
15:28:58

Виталий
17.02.2017
16:36:28
https://vk.com/landingcrm?w=wall-140428863_7
?

Andrey
17.02.2017
16:45:32
Спам пошёл)

Андрей
17.02.2017
17:29:28
Не, это свои )

Andrey
17.02.2017
17:31:57
))
Вот эта фраза конечно улыбает - "В команду молодого проекта требуются специалисты, готовые работать за опыт." ?

Sidredin
17.02.2017
17:47:35
За опыт можно и свои проекты делать.)

Андрей
17.02.2017
17:52:31
В команде другой опыт, это нельзя сравнивать.