These are chat archives for LaravelRUS/chat

11th
Jun 2016
Anton Poletayev
@roodz
Jun 11 2016 00:15

@Big-Shark Вот такой интересный компонентец откопал на тему валидации в моделях:
https://github.com/laravel-ardent/ardent

Просто мой опыт говорит о том, что валидация исходно должна жить как можно ближе к данным, а реквесты её просто могут дополнять, поскольку они есть прикладное действие по отношению к данным.
А то получается как в эпоху MySQL 3.23 - данные живут своей жизнью, бизнес-логика своей где-то в недрах реализации клиента. По сути, если проводить аналогию, реквест есть клиент по отношению к модели. Точно таким же клиентом может быть что-то другое, например, расчеты, которые никак не связаны с получением данных от пользователя (реквестом), но тоже требуют проверки при записи. Другой вопрос, как модель применяет логику. Она может её в свою очередь выделять в отдельное понятие.

Anton Poletayev
@roodz
Jun 11 2016 00:29
@Big-Shark Другими словами, я рассматриваю тот случай, когда мы НИЧЕГО не получаем от пользователя (с формы, в виде реквеста). Мы формируем данные в результате неких расчетов и записываем в модель. И модель должна при insert отработать проверку X, а при update отработать проверку X+id.
JhaoDa
@jhaoda
Jun 11 2016 01:29
@roodz не считая того, что компонентец говно и давно не обновляется, есть мнение, что данные, приходящие в модель, не могут быть не валидными. И не важно, откуда они пришли, они должны быть провалидированы ДО попадания в модель..
Praddby
@Praddby
Jun 11 2016 06:56
Всем привет
KarmaBot
@KarmaBot
Jun 11 2016 06:56
О! @Praddby! Сто лет не виделись!) Как жизнь молодецкая? Рассказывай :)
Praddby
@Praddby
Jun 11 2016 06:57
This message was deleted

По не знанию ввел следующий код:

php artisan make:auth

вопрос: как вернуть все назад, есть команда типа rollback? а то эта авторизация из коробки портит все(((

vlad-webdev
@vlad-webdev
Jun 11 2016 07:22
@Praddby нет такой команды. make:auth нужно делать в самом начале на чистой установленной ларе. Щас вам либо чистить все руками, либо откатывать через систему контроля версий)
Rolfsskiv
@Rolfsskiv
Jun 11 2016 07:24
Доброе утро, не могу понять почему при получении json иногда стоят кавычки , а иногда нет... ["1", "2"] or [ 1 , 2 ]
Вытягиваю lists("id")
vlad-webdev
@vlad-webdev
Jun 11 2016 07:30
@Rolfsskiv потому что иногда цифры - строки, а иногда цифры - цифры)
Rolfsskiv
@Rolfsskiv
Jun 11 2016 07:30
@vlad-webdev Если было б так смешно))
=)
Dave
@aios
Jun 11 2016 07:41
@Rolfsskiv ...то было бы не так обидо
@Rolfsskiv почитай про преобразование типов.
Rolfsskiv
@Rolfsskiv
Jun 11 2016 07:52
@aios в лс отписал.Ответь пожалуйста...
projct1
@projct1
Jun 11 2016 09:30
кто подскажет и поможет)
sync как работает в модели?
он сначала удаляет все записи сначала а потом инсертит?
или по праймари смотрит, если есть праймари то обновляет?
это к вопросу о пивотных таблицах, зачем в них праймари кей?
am0nshi
@am0nshi
Jun 11 2016 09:30
@rorc затем чтобы это чудо хоть как-то быстро работало :)
projct1
@projct1
Jun 11 2016 09:31
а если не важна скорость?
am0nshi
@am0nshi
Jun 11 2016 09:31
@rorc так не бывает :)
projct1
@projct1
Jun 11 2016 09:32
быстро работало что кстати?
поиск и выборка?
ну другие то поля проиндексированы же тоже
am0nshi
@am0nshi
Jun 11 2016 09:32
@rorc работа с таблицей как таковая. считай это поле - оглавлением книги
Anton Poletayev
@roodz
Jun 11 2016 10:12
@jhaoda Мысль понятна. Однако, если у вас обслуживается 1 CRUD типа "новости говносайтика" и всё - это еще куда ни шло. А если сущность с кучей полей, записывается из 100500 различных форм и ситуаций с расчетами? Во всех них плодить и поддерживать правила валидации? Это какой-то индусский подход.
JhaoDa
@jhaoda
Jun 11 2016 10:13
@roodz когда «из 100500 различных форм и ситуаций с расчетами», то это проблема с архитектурой, валидация тут как мёртвому припарки
Anton Poletayev
@roodz
Jun 11 2016 10:28
@jhaoda Вы когда-нибудь писали что-то сложнее корпоративных сайтов?
JhaoDa
@jhaoda
Jun 11 2016 10:29
@roodz я никогда не писал корпоративные сайты
Anton Poletayev
@roodz
Jun 11 2016 10:34
@jhaoda Тогда в чем проблема с архитектурой?
JhaoDa
@jhaoda
Jun 11 2016 10:35
@roodz не знаю, это же у тебя «из 100500 различных форм и ситуаций с расчетами», а не у меня
Anton Poletayev
@roodz
Jun 11 2016 10:38
@jhaoda Вопрос - как вы решаете проблему, при которой каждый раз из реквеста в реквест переносится весь шлейф описания ситуаций с полями? Я вот ленивый человек, мне лениво при любых изменениях в структуре ограничений (например, максимальное или минимальное количество символов в поле) лезть во все реквесты и там это скурпулезно править.
JhaoDa
@jhaoda
Jun 11 2016 10:38
У меня, например, пользователя можно создать в трёх разных местах — регистрация, админка и консоль, но все эти способы используют одну и ту же команду, и только она работает непосредственно с моделью пользователя и сопутствующими вещами, принимая на вход заведомо валидные данные
Anton Poletayev
@roodz
Jun 11 2016 10:39
@jhaoda А вот это уже ближе к теме, согласен.
JhaoDa
@jhaoda
Jun 11 2016 10:39
В принципе, можно валидацию в эту команду и поместить, но никак не в модель
Anton Poletayev
@roodz
Jun 11 2016 10:40
@jhaoda Спасибо, я понял, посмотрю в этом направлении.
KarmaBot
@KarmaBot
Jun 11 2016 10:40
Спасибо (+1) для @jhaoda принято! Текущая карма +971.
JhaoDa
@jhaoda
Jun 11 2016 10:43
@roodz но тонкость в том, что через админку для создания юзера надо валидировать, допустим, 6 полей, а через консоль — четыре поля
Anton Poletayev
@roodz
Jun 11 2016 10:43
@jhaoda Одно другому не мешает.
JhaoDa
@jhaoda
Jun 11 2016 10:46
@roodz как это? Правила валидации могу отличаться
И что, писать в команде универсальную валидацию с проверкой, откуда вызвана команда?
am0nshi
@am0nshi
Jun 11 2016 11:31
господи, но почему до сих пор в жабаскрипте все настолько печально =\\\\\
Dave
@aios
Jun 11 2016 11:44
и что там печального?
am0nshi
@am0nshi
Jun 11 2016 12:08
button = $(event.relatedTarget) // Button that triggered the modal
        var photoId = button.data('photo') // Extract info from data-* attributes
        var url = button.data('source') // Extract info from data-* attributes
        try
        {
          settings = JSON.parse(button.attr('data-settings')); //<- а тут .data() уже не работает, приходится напрямую работать с аттрибутом
        }
JhaoDa
@jhaoda
Jun 11 2016 12:21
@am0nshi и чем оно мотивирует своё нежелание работать там?
lordonx3
@lordonx3
Jun 11 2016 12:54
Всем привет
KarmaBot
@KarmaBot
Jun 11 2016 12:54
@lordonx3, привет =)
lordonx3
@lordonx3
Jun 11 2016 12:54
Есть приложуха, которую пишу сейчас.
am0nshi
@am0nshi
Jun 11 2016 12:54
@lordonx3 круто! :)
lordonx3
@lordonx3
Jun 11 2016 12:55
Она выполняет действия, на досках обьявлений. Несколько досок, постит на них. Пришла идея притянуть nosql, так как нагрузка достаточно большая. Что именно можно писать в nosql? Например логировать данные, или есть еще идеи?
JhaoDa
@jhaoda
Jun 11 2016 13:08
@lordonx3 откуда нам-то знать, приложуха же твоя
Anton Vorontsov
@symbios-zi
Jun 11 2016 13:08
@lordonx3 насколько возросла нагрузка?
лучше сто раз подумать прежде чем использовать всякие там монги
Sergey Protko
@fesor
Jun 11 2016 14:03

@lordonx3

Что именно можно писать в nosql?

В принципе все что не очень удобно ложится на реляционку

@symbios-zi

лучше сто раз подумать прежде чем использовать всякие там монги

не совсем, лучше просто сто раз подумать что юзать и почему. Скажем в MySQL или PostgreSQL уже есть поддержка json для денормализации данных. Но это удобно когда денормализации подлежит малая часть оных.

а сама по себе монга - хороший инструмент, вот только нужно разобраться как проектировать базу данных с ней (нужно проектировать сущности а не приводить данные к нормальной форме)
Uladzislau Danilchyk
@danilchican
Jun 11 2016 15:27
ребята, подскажите, пожалуйста, как с помощью пакета Nested Set от lazychaster вывести категории неограниченной вложенности? именно неограниченной.
нашел такой пример, но походу тут идет вывод только двухуровневой структуры категорий:
@foreach($nodes as $node)
                <li>
                    <span>{{$node->name}}</span>
                    @if($node->getDescendantCount()>0)
                        <ul class="sub-menu-ul">
                            @foreach($node->getDescendants() as $descend)
                                <li><a href="{{URL::to('/category/'.$descend->slug)}}">{{$descend->name}}</a></li>
                            @endforeach
                        </ul>
                    @endif
                </li>
            @endforeach
Sergey Protko
@fesor
Jun 11 2016 15:51
@danilchican вынеси в функцию и там юзай рекурсивный вывод с поиском в ширину (что бы не ограничивать себя по глубине)
p.s. никогда не понимал зачем нужны nested sets когда можно просто хранить графы в neo4j
Chimit
@chimit
Jun 11 2016 15:55

Привет всем! Вопрос по Lumen. Почему в config.php люмена у guard'а api стоит драйвер api, в то время как парой строчек выше в комментарии написано, что допустимое значение token? Это опечатка?

https://github.com/laravel/lumen-framework/blob/ef943ff7aab704c18a03edada6bfb3748dd3cf27/config/auth.php#L38

KarmaBot
@KarmaBot
Jun 11 2016 15:55
Прувет, @Chimit!
E.Wolf
@wolf-alone
Jun 11 2016 16:16

Доброго времени суток коллеги! Подскажите пожалуйста, как у связи загрузить её связи? Например у модели N есть связь:

public function groups() {
        return $this->hasMany('App\Models\Groups', 'catalog_id', 'id');
    }

и мы соотв. загружаем её все связанные записи одним запросом: N::with('groups');. При этом, модель Groups имеет связь Groups->books(). Как мне сразу загрузить не только связи groups, но и связи books?

KarmaBot
@KarmaBot
Jun 11 2016 16:16
@wolf-alone, ну рассказывай. Как жизнь? :)
E.Wolf
@wolf-alone
Jun 11 2016 16:16
@KarmaBot лучше всех
Dave
@aios
Jun 11 2016 16:18
@fesor а че эт такое neo4j
Kirill Nesmeyanov
@SerafimArts
Jun 11 2016 16:31
@aios графовая бд
Uladzislau Danilchyk
@danilchican
Jun 11 2016 16:41

@danilchican вынеси в функцию и там юзай рекурсивный вывод с поиском в ширину (что бы не ограничивать себя по глубине)

ты имеешь ввиду в переменную запихнуть вывод категорий со всеми тегами html рекурсивно и потом просто эту переменную вывести в blade? это же бред. или я не верно понял тебя?

Kirill Nesmeyanov
@SerafimArts
Jun 11 2016 17:33
кстати, уже пробовали php7.1?
ларка вроде работает =)
E.Wolf
@wolf-alone
Jun 11 2016 17:34
7.0 пробовал, в 7.1 что кардинально новое обещают? @SerafimArts
Kirill Nesmeyanov
@SerafimArts
Jun 11 2016 17:35
E.Wolf
@wolf-alone
Jun 11 2016 17:36
@SerafimArts да, пасиба, прочитал... ничего особенного по моему, особенно в купе с ларой
Valtas
@Valtas
Jun 11 2016 17:55
голову уже сломал не могу понять в чем прикол
хочу получить письма с mail.ru
использую пакет ddeboer/imap
$server = new Server('imap.mail.ru', 993, '/imap/ssl/novalidate-cert/readonly');
$connection = $server->authenticate(' valtasofficial@mail.ru', 'pass');
Authentication failed for user valtasofficial@mail.ru with error imap_open(): Couldn't open stream {imap.mail.ru:993/imap/ssl/novalidate-cert/readonly}
что за бред как только ни пытался, хоть к яндексу хоть к гуглу все одно и тоже
Юрий
@sawerus
Jun 11 2016 18:05
@Valtas и везде с пробелом в логине ?
Valtas
@Valtas
Jun 11 2016 18:28
нет конечно пробела нет
E.Wolf
@wolf-alone
Jun 11 2016 18:40
Коллеги, подскажите пожалуйста, где можно прочитать подробности о происхождении свойства ClassName::class (интересует ::class)?
Oleg
@Malezha
Jun 11 2016 18:41
@wolf-alone в доках по основах php
E.Wolf
@wolf-alone
Jun 11 2016 18:42
@Malezha можно точнее?
Oleg
@Malezha
Jun 11 2016 18:44
@wolf-alone не могу вспомнить, где то в станицах с основами по определению класса.
Dave
@aios
Jun 11 2016 18:44
@Malezha тонко...
Oleg
@Malezha
Jun 11 2016 18:44
По идеи в ченджлоге 5.5 должна быть прямая ссылка
Dave
@aios
Jun 11 2016 18:45
@Malezha как лед в апреле)
Oleg
@Malezha
Jun 11 2016 18:45
@aios я точно помню, что где то самых основах описывается, но вот где)
E.Wolf
@wolf-alone
Jun 11 2016 18:46
@Malezha я прекрасно понимаю что такое фасад, что такое свойство и т.д., меня интересует именно причино-следственная связь происхождения этого свойства на низком уровне.
Oleg
@Malezha
Jun 11 2016 18:46
@wolf-alone а при чем тут фасад вообще?
E.Wolf
@wolf-alone
Jun 11 2016 18:49
@Malezha насколько мне известно, среди прочего, лева часть выражения ClassName:: называется фасад, в т.ч. в ларе. Как пример: 'Form' => Collective\Html\FormFacade::class
Valtas
@Valtas
Jun 11 2016 18:49
да ну
Oleg
@Malezha
Jun 11 2016 18:49
@wolf-alone кому то нужно почитать документацию php
Valtas
@Valtas
Jun 11 2016 18:49
Фасад это вещь из лары
E.Wolf
@wolf-alone
Jun 11 2016 18:50
@Malezha спасибо!
KarmaBot
@KarmaBot
Jun 11 2016 18:50
Спасибо (+1) для @Malezha принято! Текущая карма +47.
Valtas
@Valtas
Jun 11 2016 18:50
фасад не имеет отношения к пхп
Oleg
@Malezha
Jun 11 2016 18:50
Да и фасады лары это не тот паттерн фасад, который описан в gof
E.Wolf
@wolf-alone
Jun 11 2016 18:51
@Valtas фасад, это так же паттерн проектирования, и он как определение, существовал, насколько я помню, ещё до лары, по крайней мере, в ларавском смысле - он известен очень давно
Valtas
@Valtas
Jun 11 2016 18:52
патернов в мире тьма тмущая вы их никогда не сможете перечислить, какое они отношения к чему то имеют ?
Oleg
@Malezha
Jun 11 2016 18:52
@wolf-alone кому то нужно перечитать гофоский паттерн фасада
E.Wolf
@wolf-alone
Jun 11 2016 18:52
@Malezha возможно, но я сомневаюсь в объективности подобных выводов, основанных на одном предложении.
Oleg
@Malezha
Jun 11 2016 18:53
@Valtas gof немного из основных и самые часто используемые, думаю их все же стоит хотя бы знать в общих чертах.
Хотя я тоже не скажу прям точно определение того же Visitor
E.Wolf
@wolf-alone
Jun 11 2016 18:55
Эта книга не устарела часом? С 1994г. то?
Valtas
@Valtas
Jun 11 2016 18:55
патерн вещь хочу знаю хочу нет, хочу использую хочу нет. а вот ПХП, ооп хочешь не хочешь я обязан знать
так что это разные вещи когда говорим о классе в пхп и опатерне каком то
E.Wolf
@wolf-alone
Jun 11 2016 18:56
вообще, изначально мы говорили о свойстве класса, которое в PHP 5.5+ ввели... вернее, о причино-следственной связи его появления :blush:
Valtas
@Valtas
Jun 11 2016 18:57
вот я и том же причем тут фасад какой то
E.Wolf
@wolf-alone
Jun 11 2016 18:58
думаю, вопрос можно закрыть :)))
Oleg
@Malezha
Jun 11 2016 18:58
@wolf-alone ооп описали еще раньше и ничего =)
Нееет, вы мне зацепили :D
Valtas
@Valtas
Jun 11 2016 18:58
и все таки может кто подскажет с imap в пхп о чем я чуть выше писал
я уже просто задолбался биться головой
E.Wolf
@wolf-alone
Jun 11 2016 18:59
там в авторизации пробел перед кавычкой левой, там где адрес... @Valtas
Valtas
@Valtas
Jun 11 2016 19:00
да нет там пробела, это когда здесь в чате исправлял пробел нечаянно влепил и уже не исправить
E.Wolf
@wolf-alone
Jun 11 2016 19:00
а, ок
Valtas
@Valtas
Jun 11 2016 19:01
пробовал на яндекс, гугл, маил, менял параметры, менял порты, менял пользователей,
все побарабану, подключится не получается
E.Wolf
@wolf-alone
Jun 11 2016 19:02
а лога там нет часом? В самой ларе, или может в классе где-то хранится, временный лог
типа, набор запросов-ответов клиента-сервера
Dave
@aios
Jun 11 2016 19:02
@Valtas imap_open() данные до этой функции прослеживал?
@Valtas у меня такое ощущение что тебе сюда http://php.net/manual/en/function.imap-open.php - в раздел examples
там какой то INBOX указывают в конце DSL
Nuzsk
@Nuzsk
Jun 11 2016 19:04

фасад не имеет отношения к пхп

@Valtas чо за фасады?

E.Wolf
@wolf-alone
Jun 11 2016 19:05
@Valtas вот тут в примерах, помимо mail:993 - ещё кусок URL'а есть, может дело в нем?
Dave
@aios
Jun 11 2016 19:05
@Valtas http://simplifyemail.com/configuring-gmail/ вот еще почитай - гугл так просто не пускает как говорят...
Valtas
@Valtas
Jun 11 2016 19:07
imap_open ("{imap.mail.ru:993/imap/ssl/novalidate-cert/readonly}INBOX", "valtasofficial@mail.ru", "pass")
imap_open(): Couldn't open stream {imap.mail.ru:993/imap/ssl/novalidate-cert/readonly}
хоть как пиши, что угодно добавлять все одно и тоже Couldn't open stream
E.Wolf
@wolf-alone
Jun 11 2016 19:08
@Valtas в документации к пакету не написано, какие php-модули ему нужны? Может не хватает какого-то?
Valtas
@Valtas
Jun 11 2016 19:08
пхп переключал на разные версии пофиг
Dave
@aios
Jun 11 2016 19:09
Ну епте.. Кулднотопенстрим "Я не могу открыть поток" - а учитывая контекст то у тебя с урлом проблемы.
Valtas
@Valtas
Jun 11 2016 19:09
подключено все модули, разные дев версии пхп, и на реальном сервере пробовал все побарабану будто функция попросту поломана
Dave
@aios
Jun 11 2016 19:09
@Valtas ну ну - давай без крайностей.
поломана. на ней вероятно много пир духов работает.
шума много было бы.
Valtas
@Valtas
Jun 11 2016 19:10
тоже так думаю поэтому афигеваю как так
Dave
@aios
Jun 11 2016 19:11
я видимо пропустил этот праздник.
Valtas
@Valtas
Jun 11 2016 19:11
может быть все сервера мыл требуют какого подтверждения приложения?
гугл точно помню просто так не дает подключиться мб и яндекс и майл тоже стали требовать подтверждения
E.Wolf
@wolf-alone
Jun 11 2016 19:12
@Valtas ещё вот это пишут: /notls do not do start-TLS to encrypt the session, even with servers that support it - в imap_open добавить
Dave
@aios
Jun 11 2016 19:13
@Valtas а то есть ты на их стороне ничего не делал и решил подключится)
Valtas
@Valtas
Jun 11 2016 19:14
ага добавлял все одно Couldn't open stream {imap.mail.ru:993/imap/ssl/novalidate-cert/notls}
Dave
@aios
Jun 11 2016 19:14
не помню где то на просторах интернета читал.
Valtas
@Valtas
Jun 11 2016 19:14
да я просто хочу подключиться
Dave
@aios
Jun 11 2016 19:14
Это всеравно что придти к другу домой - взять у него из холодильника пиво - и спросить "Будешь?"
Valtas
@Valtas
Jun 11 2016 19:14
на их стороне ниче не далал
ну оп их докам жеж
у них в докак написано подключайтесь там и ни слова о проверке или о настройке дополнительной
Dave
@aios
Jun 11 2016 19:17
так я тебе давал ссылку на гмайл
Valtas
@Valtas
Jun 11 2016 19:19
я с ним не работаю я работаю с яндексом и маил ру
гугл геморный
Dave
@aios
Jun 11 2016 19:23
Сейчас меня точно отправят в доку
почему в пагинации по 10 элементов из 12 обьектов - мне на второй странице возвращается 10-ый из первой страницы?
и на последней(второй) странице - возвращает не 2 как должен - а 3
Vladimir Shakurov
@shakurov
Jun 11 2016 21:12
Привет. Прошу проверить функцию, правильно ли все написал и можно ли лучше http://laravel.io/bin/aNK58, Страница поста открывается по ссылке, site.ru/posts/{id}/{slug}, если указан некорректный slug или его вообще нет, редиректим на страницу с правильным slug
KarmaBot
@KarmaBot
Jun 11 2016 21:12
Не узнал тебя, @shakurov. Богатым будешь :)
tanxeel
@tanxeel
Jun 11 2016 21:31
i think i am in wrong group
i cant undetstand your language :worried:
so bye :smile:
am0nshi
@am0nshi
Jun 11 2016 21:32
@tanxeel IT'S RUSSINA, AND YOU ARE IN RUSSIAN GROUP, WELLCOME ;) IN ANY CASE - YOU CAN ASK, EVERYBODY WILL UNDERSTAND YOU
Vladimir Shakurov
@shakurov
Jun 11 2016 21:33
@am0nshi посмотори
am0nshi
@am0nshi
Jun 11 2016 21:33
@shakurov сплю уже, завтра :)
Vladimir Shakurov
@shakurov
Jun 11 2016 21:33
@am0nshi ок)
am0nshi
@am0nshi
Jun 11 2016 21:38
@shakurov что такое слуг, что такое некоректный слуг? из кода мало что понятно
Vladimir Shakurov
@shakurov
Jun 11 2016 21:38
@am0nshi слуг это транслит заголовка поста
@am0nshi site.ru/1/zagolovok-posta
am0nshi
@am0nshi
Jun 11 2016 21:40
@shakurov да вроде все ок
Vladimir Shakurov
@shakurov
Jun 11 2016 21:41
@am0nshi спасибо
KarmaBot
@KarmaBot
Jun 11 2016 21:41
Спасибо (+1) для @am0nshi принято! Текущая карма +12.