These are chat archives for LaravelRUS/chat

31st
Jul 2015
Maxim
@Big-Shark
Jul 31 2015 02:11
@klermonte можно модифицировать, но новый квери класс, это новое условие, так что проблем с этим нет
Maxim
@Big-Shark
Jul 31 2015 02:48
@greabock схему можно разбивать по файлам, но это редко используют, предпочитают все в 1 файле.
@greabock создать схему по БД можно, но вот поменять поле, и обновить схему уже нет, он умеет только создавать новую, да и со временем писать схему становится быстрй и легче чем править БД)
Uladimir Sadkou
@GiantVlad
Jul 31 2015 05:37
Пытаюсь разобраться с elexir. Конфигурация: windows8-64 + openserver. Скачал и установил в c:\program files\nodejs. с:\Program Files\nodejs>node -v
v0.12.7 Дальше не могу понять как связать его со своим проектом. Отсюда вопрос. Надо было устанавливать node в папку проекта?
Andrew
@bitw
Jul 31 2015 05:42
всем привет. сейчас наткнулся на такую прелюбоптнейшую штуку... массив с именем permissions не отправляет аяксом
его вообще не буде в FormData при отправке
Paul Klementyev
@klermonte
Jul 31 2015 05:47
@GaintVlad из корня проекта выполнить npm install или как твм в винде делается
Soprun Vladislav
@vlsoprun
Jul 31 2015 06:05
Всем доброго времени суток и хорошего рабочего дня :smile:
Orel
@2byte
Jul 31 2015 06:08
@GaintVlad по идеи нужен nodejs и npm, из консоли в корне проекта выполнить npm install далее запуск gulp
Dinar Garipov
@garf
Jul 31 2015 06:47
Привет всем.
Soprun Vladislav
@vlsoprun
Jul 31 2015 06:47
@gaaarfild Привет
Dinar Garipov
@garf
Jul 31 2015 06:47
А есть какие нибудь готовые инсталлеры на PHP, или это всегда самописный продукт?
Const
@umren
Jul 31 2015 07:00
инсталлеры?
для чего?
Dinar Garipov
@garf
Jul 31 2015 07:00
@umren Для сайта например
Const
@umren
Jul 31 2015 07:01
типа как в цмс?
next next
настрим базу
итд?
Dinar Garipov
@garf
Jul 31 2015 07:01
именно )
Const
@umren
Jul 31 2015 07:01
готовых не видел, везде самопис
Dinar Garipov
@garf
Jul 31 2015 07:02
@umren Я вот ищу. Вроде есть готовые. Но че-то в основном какие-то подозрительные ))
Const
@umren
Jul 31 2015 07:04
Ага, они тебе там заинсталят
бекдор )
По мне так смысл подгонять под инсталлер, проще написать
поэтому их и нету толком
Dinar Garipov
@garf
Jul 31 2015 07:05
Возможно :)
butschster
@butschster
Jul 31 2015 07:42
у меня есть CLI инсталлер
в KodiCMS
Dinar Garipov
@garf
Jul 31 2015 07:42
Круто! Это реально круто!
Я тоже сделаю такой
Но, мне бы еще хотелось сделать http
Dinar Garipov
@garf
Jul 31 2015 07:43
Для тех, кто боится CLI
butschster
@butschster
Jul 31 2015 07:43
ну и для http почти готов, вернее он работает даже, только требует доработки
Dinar Garipov
@garf
Jul 31 2015 07:43
@butschster Он же не сможет поставить Ларавель, так как сам на нем работает :)
butschster
@butschster
Jul 31 2015 07:44
а тебе нужен чтобы установил и laravel?
Dinar Garipov
@garf
Jul 31 2015 07:44
Мне кажется, инсталлер должен быть сильно тодельным продуктом
Ну дак надо же composer install сделать :)
butschster
@butschster
Jul 31 2015 07:45
ну вообще реально и такое сделать
Dinar Garipov
@garf
Jul 31 2015 07:45
Или есть другой вариант это распространять?
Реально! Но не на том же ларавель ))
если только на другом ) На котором руками набрать )
butschster
@butschster
Jul 31 2015 07:46
делаешь файлик install.php который скачивает composer,phar и через него сам вытягивает laravel и твой блог далее как вытянул удаляет себя и редиректит на страницу установки блога
Dinar Garipov
@garf
Jul 31 2015 07:47
Ну да. Так можно!
nnnikolay
@nnnikolay
Jul 31 2015 07:47
Есть ли возможность получить структуре данных от валидатора не только поле но и скажем модель ? к примеру вот так ['user.qnt' => 'this field is required'] ??
Dinar Garipov
@garf
Jul 31 2015 07:47
Нормальный вариант в принципе
Почему бы и нет
@nnnikolay От валидатора ничего не получаешь
Валидатор просто либо пропускает либо нет
nnnikolay
@nnnikolay
Jul 31 2015 07:49
@gaaarfild да но он сохраняет сообщения в messagebag
@gaaarfild можно ли как-то его попросить сохранить в той структуре что я привел выше ?
Dinar Garipov
@garf
Jul 31 2015 07:49
@nnnikolay ты и модель хочешь сохранить туда?
nnnikolay
@nnnikolay
Jul 31 2015 07:49
@gaaarfild ее имя хотя б
@gaaarfild я просто в итоге от валидации нескольких "моделей" хочу заполучить сообщения об ошибках которые связаны не только с полями но и с моделями к которым принадлежат эти поля
Dinar Garipov
@garf
Jul 31 2015 07:50
А ты используешь Форм реквест?
Или просто валидатор в контроллере?
nnnikolay
@nnnikolay
Jul 31 2015 07:51
This message was deleted
форм реквест не использую
ast-rb
@ast-rb
Jul 31 2015 07:52
Привет всем :) Ребят подскажите пожалуйста никто не видел на гитхабе интересные проекты на ларе? Именно реализованные приложения, чтобы можно посмотреть решения принятые разработчиками и извлечь опыт?
NelinD
@NelinD
Jul 31 2015 07:52
@ast-rb опыт в вакууме?
ast-rb
@ast-rb
Jul 31 2015 07:53
Ага ) сравнить со своими решениями ) может что-то перенять и тд
nnnikolay
@nnnikolay
Jul 31 2015 07:53
@gaaarfild на подобии того что делает метод withErrors
попробую реализовать
ast-rb
@ast-rb
Jul 31 2015 07:53
Или бестпрактикс :)
Dinar Garipov
@garf
Jul 31 2015 07:54
@ast-rb KodiCMS
@ast-rb OctoberCMS
@ast-rb Мой блог можешь тоже глянуть.
Но мой не претендует на бест пректис. Только на рапид девелопмент :)
ast-rb
@ast-rb
Jul 31 2015 07:56
Ну рапид тоже нужен :) Под это как я понимаю ларавел и заточен.
Maxim
@Big-Shark
Jul 31 2015 07:56
@ast-rb инвойс ниньзя
Dinar Garipov
@garf
Jul 31 2015 07:56
Ну я написал его за недели 2-3
По сути уже вполне жизнеспособный продукт для непритязательных.
butschster
@butschster
Jul 31 2015 07:57
@ast-rb KodiCMS использует по полной возможности Laravel, + можешь скачать пакет для реализации модульной структуры как у меня
ast-rb
@ast-rb
Jul 31 2015 07:58
@Big-Shark что значит инвойс ниньзя?
ast-rb
@ast-rb
Jul 31 2015 07:59
Большое спасибо, будет чем на выходных заняться :)
nnnikolay
@nnnikolay
Jul 31 2015 08:07
какой правильный способ остановки Ларавел исполнения ?
скажем если валидация не прошла то просто return [data] из action и все? верно ?
из контроллера к примеру
Artur Gafurov
@assurrussa
Jul 31 2015 08:09
nnnikolay
@nnnikolay
Jul 31 2015 08:13
@assurrussa ну конечно я читал это, просто у меня api приложение, нету редиректов само собой, мне юы нужно послать response->withHeaders.. бла бла бла.. но у меня свой респонс.. и т.д. в общем все не типично :) но я думаю return достаточно
Dinar Garipov
@garf
Jul 31 2015 08:13
@nnnikolay Возвращай редирект назад
return Redirect::back();
withErrors()->withInput()
nnnikolay
@nnnikolay
Jul 31 2015 08:15
не withInput с сессиями мне не надо совсем ) но я понял что return что нить по идее должен нормально закончить работу контроллера
butschster
@butschster
Jul 31 2015 08:21
@nnnikolay в своем приложении я при ошибках валидации вызываю ValidationException который отлавливаю в callAction и в случае его выбрасывания делаю редирект назад с нужным респонс
Dinar Garipov
@garf
Jul 31 2015 08:29
@butschster А подскажи, как ты реализуешь демонстрационную версию, в которой нельзя сохранять данные?
butschster
@butschster
Jul 31 2015 08:29
ты про что именно?
Dinar Garipov
@garf
Jul 31 2015 08:29
@gaaarfild Ну вот у тебя стоит демка КодиЦМС
butschster
@butschster
Jul 31 2015 08:29
demo.kodicms.ru?
Dinar Garipov
@garf
Jul 31 2015 08:29
Если залогинится, я там ничего не могу сохранить и добавить. Просто посмотреть все, но не менять
Как реализовал?
Ага
butschster
@butschster
Jul 31 2015 08:30
ну там каскадная структура файлов, т.е. системные вьюхи можно переопределять в плагинах, и я в плагине переопределил те шаблоны в которых хотел убрать кнопки
Dinar Garipov
@garf
Jul 31 2015 08:31
@butschster Это конфигами?
butschster
@butschster
Jul 31 2015 08:31
нет
Dinar Garipov
@garf
Jul 31 2015 08:31
Я к тому, что мне бы хотелось просто подтягивать из репозиториев код, а он в зависимости от конфига либо сохранял, либо нет
Но не хочу делать в каждом изменении if
Иначе как-то это тупо страшно
butschster
@butschster
Jul 31 2015 08:32
ну тут два пути
у тебя цель какая?
Dinar Garipov
@garf
Jul 31 2015 08:42
@butschster Цель, чтобы я просто на демо версию обновления накатывал через git pull origin
И не парился, что у меня там что-то изменится в этой штуке
И при этом не править руками сохраняющие функции каждый раз
butschster
@butschster
Jul 31 2015 08:43
ну так ты можешь сделать публикацию шаблонов
Dinar Garipov
@garf
Jul 31 2015 08:43
Чтобы было demo.0ez.ru ))
Подробнее?
если есть шаблон в папке https://github.com/KodiCMS/module-loader/blob/master/src/ModuleContainer.php#L326 то загрузится он, если нет, то по стандартному пути
Dinar Garipov
@garf
Jul 31 2015 08:44
@butschster Ну тогда придется всегда делать двойную работу
Для нового функционала делать по 2 вьюхи
butschster
@butschster
Jul 31 2015 08:45
тебе нужно будет только те шаблоны править где хочешь скрыть чтото на демо сайте
Dinar Garipov
@garf
Jul 31 2015 08:45
Но их ведь придется править ))
Знаешь какая у меня была идея?
butschster
@butschster
Jul 31 2015 08:45
и в чем проблем?
тебе в любом случае придется изврщаться какой бы ты способ не выбрал
Dinar Garipov
@garf
Jul 31 2015 08:46
В модели метод save() переопределить.
if($editable()) {
    parent::save();
}
И все бы нормально
Alexey
@Butochnikov
Jul 31 2015 08:47
@gaaarfild с днюхой тебя. Если вконтакт не врет )
Dinar Garipov
@garf
Jul 31 2015 08:47
Но затык в том, что я порой использую FindOrNew. А если это новая запись, то при редиректе, я не могу получить id записи. Ведь она не создалась
@Butochnikov не врет :)
butschster
@butschster
Jul 31 2015 08:48
да, с днем рождения значит. ну там всех благ, программирование чтобы давалось с легкостью, заказчиков с хорошими ТЗ и т.д.
Alexey
@Butochnikov
Jul 31 2015 08:48
@gaaarfild тогда еще и с личным новым годом )
butschster
@butschster
Jul 31 2015 08:48
ты думай о том, что тебе нужно в системе а что только на демо сайте и все встанет на свои места, зачем пихать в рабочую версию то, что нужно только на демо сайте?!
Dinar Garipov
@garf
Jul 31 2015 08:49
@butschster @Butochnikov Спасибо ребята :)
butschster
@butschster
Jul 31 2015 08:49
отредактировать шаблорны 5 минут зато ничего выдумывать не надо
Dinar Garipov
@garf
Jul 31 2015 08:49
@butschster Да нет же :) Я просто видимо недостаточно объяснил мой воркфлоу ))
Я прогаю полноценную версию. Потом коммичу и пушу в мастер скажем. На всех сайтах, я делаю пулл. И у меня изменения заливаются, а кастомизация в конфигах.
Соответственно, я бы хотел конфиг типа $editable = false;
И если его выставляешь, то ничего никуда не сохраняется
Режим демонстрации включается.
Artur Gafurov
@assurrussa
Jul 31 2015 08:51
Чего то я не понимаю с языком в собственном пакете, перестали работать переводы)))) при том что в одном месте всё переводит а в других нет))) кто нить сталкивался с таким? может что-то не доглядел?
@gaaarfild с ДР)
Dinar Garipov
@garf
Jul 31 2015 08:51
@assurrussa А паблиш?
Artur Gafurov
@assurrussa
Jul 31 2015 08:53
а разве надо делать паблиш для своих переводов когда используешь функцию, loadTranslationsFrom? да и в ручную пробовал, не выходит
butschster
@butschster
Jul 31 2015 09:00
@gaaarfild т.е. ты демосайт хочешь внедрить во всю систему, только зачем?
Сергей
@egent
Jul 31 2015 09:02
Приветствую всех! Ребят, кто как хранит множественные свойства модели, например есть Квартира - адрес, тел, имя, и куча куча всяких дополнительных параметров, парковка, лифт, там какие окна, эатж и тд. и тп. В старом проекте таблица имеет 100 полей.
Знаю есть тип json в ларе, но можно ли потом осуществлять выборку по конкретному полю?
Maxim
@Big-Shark
Jul 31 2015 09:04
@gaaarfild с днем рождения, удачи, любви, и всего самого наилучшего)
Dinar Garipov
@garf
Jul 31 2015 09:05
@butschster Да. Ну не знаю. Чтобы меньше волокиты. Я люблю быстро работать и не тратить время на прописывания.
@Big-Shark Спасибо большое :)
@egent Нельзя. Ну либо очень затратно. А почему бы не особо часто используемое отдельить в связанную таблицу?
@assurrussa А попробуй сделать еще publish()
butschster
@butschster
Jul 31 2015 09:06
@gaaarfild ну смотри, ты делаешь для других , а им может быть не нужно что ты хочешь сделать поэтому ты должен учитывать это, самый лучший вариант функционал тот, который выпиливается
Сергей
@egent
Jul 31 2015 09:07
@gaaarfild а есть еще дома, комм.недвижимость - там уже другой надор полей.. для каждого типа отдельную?
Dinar Garipov
@garf
Jul 31 2015 09:07
@butschster Ну в идеале, я нацелен на пользователя, а не того, кто допиливает. В идеале. Но не исключая.
@egent У меня такая же проблема была. Правда я сделал все в одной таблице. Но у меня полей было не 100 а около 30-40.
@egent Тоже недвижимость.
Alexey
@Butochnikov
Jul 31 2015 09:08
@egent есть урок на эту тему, но он платный https://laracasts.com/lessons/managing-mass-user-settings
если про json
Dinar Garipov
@garf
Jul 31 2015 09:08
|Но подписка стоит того
Artur Gafurov
@assurrussa
Jul 31 2015 09:09
Если паблишь сделать и убрать неймспейс, то конечно же всё заработает, но и нафига тогда нужен этот стандартный метод loadTranslationsFrom('from/to','courier'), если пол сайта перевело, пол нет.....
Сергей
@egent
Jul 31 2015 09:09
@Butochnikov ага смотрел его вот и задумался, но можно ли потом выбирать по этим вложенным полям?
@gaaarfild 4ый месяц на подписке )
Dinar Garipov
@garf
Jul 31 2015 09:10
@egent Потому что карточку забываешь убирать? :)
@assurrussa Ну, скорее всего, какой-то мелкий косяк.
Сергей
@egent
Jul 31 2015 09:11
@gaaarfild ага один раз без ведома снял с вирт яндекса )
Dinar Garipov
@garf
Jul 31 2015 09:11
Который не заметил
Artur Gafurov
@assurrussa
Jul 31 2015 09:11
@gaaarfild d 5.0 всё работало, в 5.1 перестало, вот и не понимаю
Alexey
@Butochnikov
Jul 31 2015 09:14
@egent с майскулом не знаю, на монго и постгри можно будет, но это уже другая история
Dinar Garipov
@garf
Jul 31 2015 09:19
@Butochnikov На постгрес есть жисон?
JhaoDa
@jhaoda
Jul 31 2015 09:21
@egent я храню
И через аксессоры/мутаторы преобразую это в value objects
Сергей
@egent
Jul 31 2015 09:22
@Butochnikov понял, в мыслях такой варинат - есть таблица со всеми возможными свойствами обектов, есть таблица самого объекта и есть свзующая таблица типа: item_id, option_id и настройка связей :)
@jhaoda а выборка например всех у гого есть парковка...
JhaoDa
@jhaoda
Jul 31 2015 09:23
@egent у меня нет такой задачи
Сергей
@egent
Jul 31 2015 09:23
@jhaoda просто запись и вывод?
JhaoDa
@jhaoda
Jul 31 2015 09:23
@egent да
@egent так что либо отдельная таблица, либо постгрес, либо какие-то nosql-решения
Andrey
@Insidexa
Jul 31 2015 09:25
кто поможет мне с кодировкой, уже сил нету
Сергей
@egent
Jul 31 2015 09:25
@jhaoda понял, будем думать..
NelinD
@NelinD
Jul 31 2015 09:26
@Insidexa великий гугол?
ast-rb
@ast-rb
Jul 31 2015 09:26
Ребят подскажите а я могу в L4, передать массив объектов на запись в базу данных?
create как я понимаю не принимает массив данных
Andrey
@Insidexa
Jul 31 2015 09:28
@NelinD к сожалению не помог
nnnikolay
@nnnikolay
Jul 31 2015 09:31
@butschster я не уверен что ошибки валидации это эксепшн
Сергей
@egent
Jul 31 2015 09:31
@ast-rb $user = User::create(array('name' => 'John'));
ast-rb
@ast-rb
Jul 31 2015 09:32
            User::create(
                array(
                    'name'=> 'Admin',
                    'email' => 'admin@project.com',
                    'password' => Hash::make('aaaaaa'),
                )
            );

            User::create(
                array(
                    'name'=> 'Manager',
                    'email' => 'manager@project.com',
                    'password' => Hash::make('bbbbb'),
                )
            );
То есть я 2 раза делаю create, а нету куда можно засунуть сразу 2 массива а не по одному?
Насколько я понял create принимает только один массив
JhaoDa
@jhaoda
Jul 31 2015 09:36
@ast-rb использовать DB::insert?
Andrey
@Insidexa
Jul 31 2015 09:37
я кое что похожее делал
ща скину код
ast-rb
@ast-rb
Jul 31 2015 09:37
Хм, а я чтото не подумал про билдер :)
Andrey
@Insidexa
Jul 31 2015 09:38
This message was deleted
@ast-rb
//controller
$data[] = [
                    'paths' => $filename
                ];
$data = [
  'paths' => $filename
];
Uploader::add($data);
// model
return DB::table('uploaders')->insert(
                $data
            );
ast-rb
@ast-rb
Jul 31 2015 09:41
Большое спасибо :)
butschster
@butschster
Jul 31 2015 09:51
@nnnikolay у меня за валидацию отвечает отдельный класс и экшен соответсвенно выглядит таким образом https://github.com/KodiCMS/kodicms-laravel/blob/dev/modules/Users/Http/Controllers/UserController.php#L88 чисто и лаконично
контроллер знает только о типах эксепшенов и если какой то класс его выкидывает в экшене контроллер его тлавливает и на основе типа производит дальнейшие действия и мне не надо кучу условий писать исходя из того, прошла ли валидация или нет, найден объект при вызове findOrFail или нет, я просто пишу метод и все без всяких условий
это называется автоматизация
nnnikolay
@nnnikolay
Jul 31 2015 10:42
@butschster можно меньше пафоса :) но в целом мне не нравится, конкретно тем что Репозиторий должен орудовать коллекциями а у тебя там похоже айтем и
тем что репозиторий нарушает S принцип
я все дело по сервисам и валидация это отдельный сервис.. убежал на лянч, можем позже продолжить
ексепшны не для этого
они существуют чтобы обрабатывать "исключительные" события
в нормальной проге ексепшн всегда заканчивается крэшем
ты не путай эксепшены
эксепшен эксепшену рознь.
Roman Tsiupa
@dracony
Jul 31 2015 10:58
нет)
в том то и дело
что так как в ларе это печаль
butschster
@butschster
Jul 31 2015 10:58
это только одно из мнений
если уметь ими пользоваться то все норм
Roman Tsiupa
@dracony
Jul 31 2015 10:58
я даже скажу почему
butschster
@butschster
Jul 31 2015 10:58
приведи примеры того чем это плохо
Roman Tsiupa
@dracony
Jul 31 2015 10:58
эксепшн дорог для системы
для него строится бектрейс
butschster
@butschster
Jul 31 2015 10:59
для backend?
Roman Tsiupa
@dracony
Jul 31 2015 10:59
он жрет память
я не спорю
если бы в пхп были вот такие миниекспешны
где бектрейс не важен
итд то ок тогда
но их нет
та статья что я линкнул как раз об этом
butschster
@butschster
Jul 31 2015 11:00
@dracony ну да, зато тонна лишнего кода это лучше :)
Roman Tsiupa
@dracony
Jul 31 2015 11:00
тонна лишнего кода только когда архитектрука кривая
butschster
@butschster
Jul 31 2015 11:00
любое решение зависит от задачи
Roman Tsiupa
@dracony
Jul 31 2015 11:00
например
для валидации удобно сделать ДТО класс
с полями напрмер
Result: isValid (bool), errors (array of ValidationError)
и пусть метод валидейт его возвращает
butschster
@butschster
Jul 31 2015 11:02
ну вот скажи сколько раз в системе у тебя будет вызов ValidationException что ты так обоишься за память?
ты же не список тянешь
а валидируешь форму
Roman Tsiupa
@dracony
Jul 31 2015 11:03
$result = $form->validate();
if($result->isValid()) {

}else{
     foreach($result->errors() as $error) {
           var_dump($error->message());
     }
}
butschster
@butschster
Jul 31 2015 11:03
при привел код который ты в шаблоне вызываешь?
Roman Tsiupa
@dracony
Jul 31 2015 11:03
нет, ну я не спорю конечно что докупить РАМа и проца недорого
я просто привел код
при чем тут шаблон?
butschster
@butschster
Jul 31 2015 11:04
ну я не понимаю нафига ты этот код показал, что я в нем увижу?
Roman Tsiupa
@dracony
Jul 31 2015 11:04
чтобы показать клас Резалт
как можно без ексепшнов это дело делать
сахара к этому можно любого придумать
butschster
@butschster
Jul 31 2015 11:05
у тебя 10 контроллеров покажи код который будет в каждом экшене контроллера для валидации
пример кода
Roman Tsiupa
@dracony
Jul 31 2015 11:05
так а что я валидую?
butschster
@butschster
Jul 31 2015 11:05
данные реквеста
Roman Tsiupa
@dracony
Jul 31 2015 11:05
типа на выходе будет страница для пользователя
типа форма с ошыбками?
ну так данные риквеста я тебе показал
butschster
@butschster
Jul 31 2015 11:06
т.е. именно это ты напишешь в каждом экшене?
Roman Tsiupa
@dracony
Jul 31 2015 11:06
пффф ну зависит конечно
например
butschster
@butschster
Jul 31 2015 11:07
напиши готовый пример
и мы его обсудим
OsipovMN
@projct1
Jul 31 2015 11:07
есть ли хелпер в ларавеле для формирования slug, ну чтобы урл из русского переводило
Const
@umren
Jul 31 2015 11:07
Оо , святой спор про эксепшены
вечный
Roman Tsiupa
@dracony
Jul 31 2015 11:07
function validateOrReturnError($form) {
    $result = $form->validate();
   if(!$result->isValid()) {
         return $this->buildErrorResponse($result);
   }
}

if($response = validateOrReturnError($form)) {
    return $response;
}
//obrabotka validnoj formy
butschster
@butschster
Jul 31 2015 11:08
экшен давай
Roman Tsiupa
@dracony
Jul 31 2015 11:09
poslednije 4 stroki budut v ekshne
a sverhu helper zasunj kuda hochesh
mozhno cherez kolbek
naprimer
function a($form, $callback) {
    $result = $form->validate();
    if($result->isValid()) {
        return $callback($form);
    }else{
       $this->returnErrorResponse($result);
}

return a($form, function() {
   //obrabotka validnogo
});
JhaoDa
@jhaoda
Jul 31 2015 11:11
@rorc есть
Roman Tsiupa
@dracony
Jul 31 2015 11:11
v ekshn popadajet 1-2 stroki
@umren on ne svjatoj, na nego jestj otvet) dazhe ssylku skinul
Const
@umren
Jul 31 2015 11:13
@dracony ya dumaju est' ssilki s obratnim smislom ;)
Roman Tsiupa
@dracony
Jul 31 2015 11:13
najdi)
hotj odnu)
Const
@umren
Jul 31 2015 11:13
len'
Roman Tsiupa
@dracony
Jul 31 2015 11:13
ih net
potomu chto ono lomajet srazu kuchu princypov
Const
@umren
Jul 31 2015 11:13
nado najti cheloveka kotoriy pridumal exception's
i sprosit' u nego
Roman Tsiupa
@dracony
Jul 31 2015 11:13
он не для этого его придумал
я не говорю что они плохо
Const
@umren
Jul 31 2015 11:14
vot on tochno znaet
зачем они нужны
Roman Tsiupa
@dracony
Jul 31 2015 11:14
ексепшны нужны для грацыозной обработки ошыбок
вот еще причина
Const
@umren
Jul 31 2015 11:14
ты написал эксепшен и ошибка в одной строчке
Roman Tsiupa
@dracony
Jul 31 2015 11:14
использование их для работы в програме
типа валидации
создет презумпцию
что вызывающая функцыя должна знать о всех етих ексепшнах
butschster
@butschster
Jul 31 2015 11:15
@dracony ты столько начитался что аж самому не тошно? :)
Roman Tsiupa
@dracony
Jul 31 2015 11:15
какие из них "нормальные" какие нет
butschster
@butschster
Jul 31 2015 11:15
если этот подход помагает сэкономить кучу времени почему от него нужно отказываться?
Const
@umren
Jul 31 2015 11:15
он их использует потому что удобно
Roman Tsiupa
@dracony
Jul 31 2015 11:16
то есть принцип С с солида уже ушел
@butschster так а чем он лучше чем то что я написал?
butschster
@butschster
Jul 31 2015 11:16
а считать память там где ее много глупо
да тем что у тебя дополнительные условия на каждом шагу
Roman Tsiupa
@dracony
Jul 31 2015 11:16
нет
Const
@umren
Jul 31 2015 11:16
ну если у тебя это только на записи происходит, да в задачах где нужна цмс то эксепшионы я думаю не страшны
Roman Tsiupa
@dracony
Jul 31 2015 11:16
где
в одном хелпере
butschster
@butschster
Jul 31 2015 11:17
ну и при проверке валидации
Roman Tsiupa
@dracony
Jul 31 2015 11:17
так он в хелпере
чем тут много писать: return a($form, function() {
//obrabotka validnogo
});
butschster
@butschster
Jul 31 2015 11:17
класс, у тебя кастыль на кастыле
а если несколько валидаций?
Roman Tsiupa
@dracony
Jul 31 2015 11:18
то есть 5 форм нараз валидуем?
Const
@umren
Jul 31 2015 11:18
несколько хелперов)
Roman Tsiupa
@dracony
Jul 31 2015 11:18
так тот же хелпер
butschster
@butschster
Jul 31 2015 11:18
ну у тебя две модели одновременно создаются например
пользователь и профиль для него
Nnxoxo
@Nnxoxo
Jul 31 2015 11:18
Добрый день, леди и джентельмены. Может кто-то подсказать как мне установить laravel 5 на windows 10? Делал по туториалу Jeffrey Way, но когда я прописываю в cmd homestead, консоль утверждает, что не знает такой команды. Как быть?
Roman Tsiupa
@dracony
Jul 31 2015 11:18
return a($form1, function() {
return a($form2, function(){})
});
no ja by sdelal eto odnoj formoj
у меня в коде модель сама себя на валидует))
я забыл с кем разговариваю)))))))
butschster
@butschster
Jul 31 2015 11:19
@dracony я тебя понял, ты делаешь как тебе уобно , я как мне на этом и закончим спор
Roman Tsiupa
@dracony
Jul 31 2015 11:19
нет, я так делаю не только для этого
у меня вот есть люди которые пишут проект
который я 3 года как начал
и 2 раза контору сменил
butschster
@butschster
Jul 31 2015 11:20
и это я тоже понял, ты экономишь крупинки :)
Roman Tsiupa
@dracony
Jul 31 2015 11:20
по сей день в скайп пишут что мол спасибо егко разобратся)
Const
@umren
Jul 31 2015 11:20
каждый день?
butschster
@butschster
Jul 31 2015 11:20
@dracony ты молодец!
Const
@umren
Jul 31 2015 11:20
каждый день, новый разработчик причем)
Roman Tsiupa
@dracony
Jul 31 2015 11:20
потому что у меня событий в коде нет,е ксепшнов нет, даже "елсе" мало
butschster
@butschster
Jul 31 2015 11:21
мне так никто не пишет
OsipovMN
@projct1
Jul 31 2015 11:21
@jhaoda какой
JhaoDa
@jhaoda
Jul 31 2015 11:21
@rorc потрудись документацию почитать — http://laravel.com/docs/5.1/helpers
Roman Tsiupa
@dracony
Jul 31 2015 11:21
я с таким подходом что "ну насрать на крупинки" у вас за полгода уже легаси проект)
OsipovMN
@projct1
Jul 31 2015 11:25
@jhaoda там настраивать для каждой буквы надо
@jhaoda должно быть готовое решение
JhaoDa
@jhaoda
Jul 31 2015 11:25
@rorc WAT?
OsipovMN
@projct1
Jul 31 2015 11:25
@jhaoda чтобы по правилам яндекса транслитерировать например
JhaoDa
@jhaoda
Jul 31 2015 11:25
Почему я ничего не настраивал?
OsipovMN
@projct1
Jul 31 2015 11:26
JhaoDa
@jhaoda
Jul 31 2015 11:26
...
OsipovMN
@projct1
Jul 31 2015 11:26
@jhaoda хочешь сказать русские буквы из коробки идут в ларавеле?
JhaoDa
@jhaoda
Jul 31 2015 11:26
Даж не знаю, что сказать...
@rorc не возникало мысли попробовать?
Что бы не нести херню?
OsipovMN
@projct1
Jul 31 2015 11:27
@jhaoda сорри, не ту функцию смотрил, str_slug есть))))))
спс)))
Andrey
@Insidexa
Jul 31 2015 11:33
есть в packalyst пакет для работы с кодировкой ?
butschster
@butschster
Jul 31 2015 11:38
@jhaoda ты такой суровый)
OsipovMN
@projct1
Jul 31 2015 11:43
посоветуйте самый хороший пакет для построения древовидных менюшек, с чекбоксами и тд
butschster
@butschster
Jul 31 2015 11:51
@rorc лол
weber3
@weber3
Jul 31 2015 12:22
Приветствую всех, есть функция News::all(); а как можно вывести последние 5 записей отсортированных по дате?
Сергей
@egent
Jul 31 2015 12:29
@weber3 $items = Item::latest()->take(5)->get();
weber3
@weber3
Jul 31 2015 12:33
@egent огромное спасибо
OsipovMN
@projct1
Jul 31 2015 12:33
есть в ларавеле встроенные функции для построения дерева? ну например если из базы получил каталог с id и parent_id
чтобы селект потом построить древовидный например
Сергей
@egent
Jul 31 2015 12:35
@rorc но это не встроенное
@weber3 пожалуйста - это все в мануалах есть
OsipovMN
@projct1
Jul 31 2015 12:38
@egent спасиб, гляну
weber3
@weber3
Jul 31 2015 12:43
@egent скинь пожалуйста ссылку где почитать
JhaoDa
@jhaoda
Jul 31 2015 12:45
@weber3 ты ссылку на документацию не нашел?
Сергей
@egent
Jul 31 2015 12:45
@jhaoda бывает )
@weber3 laravel.com/docs/5.1/queries#ordering-grouping-limit-and-offset
Sergey
@myshev
Jul 31 2015 13:09
всем привет!
мне нужно валидировать поле таким образом чтоб оно подошло под один из валидаторо. а конкретно или значение которое есть а базе или значение которое равно, например "#"
если делать так: 'car' => 'in:#|exists:cars,id' то срабатывают одновременно два валидатора и поле всегда невалидно
подскажите пожалуйста
JhaoDa
@jhaoda
Jul 31 2015 13:16
@myshev напиши свой валидатор
nnnikolay
@nnnikolay
Jul 31 2015 15:14
А как провалидировать одно поле используя данные из него плюс из другого ?
т.е. мне пришло а=5, b=7 как мне узнать что 7-5 > 2 с помощью валидатора??
проблема в том как получить в кастомном валидаторе оба значения для проведения требуемой проверки
Роман Сохарев
@greabock
Jul 31 2015 15:25
@nnnikolay написать свое расширение валидатора
из коробки можно только сравнить значения полей
nnnikolay
@nnnikolay
Jul 31 2015 15:29
а как сравнить поля ? может в исходники найду подсказку тогда как мен решить мой кейз :)
Paul Klementyev
@klermonte
Jul 31 2015 15:29
@nnnikolay можешь например в этом валидаторе завести статическое поле, и в зависимости от его наполненности либо пропускать не проверяя, ну типа ждем других данных, либо проверять и уже в зависимости от валидности падать или нет. Но мозолью опыта чую, раз у тебя такая задача возникла, то что-то не так у тебя с архитектурой
nnnikolay
@nnnikolay
Jul 31 2015 15:32
@klermonte я решил делать валидатор сервисом и не привязывать к модели, т.к. считаю что валидация типа email ли это , это вообще не модель.. проблема появляесят когда нам нужно отвалидировать доменные данные через дата леер и тут ларавел просит таблицу и поле, т.е. он модель ведь не юзает для этого ? он же не просит класс модели...
по этому я решил что для кейзов когда необходима валидация в дата слое есть смысл писать кастомные валидаторы которые будут делать запрос(ы) либо через дата леер (ORM) или на прямую SQLить
Paul Klementyev
@klermonte
Jul 31 2015 15:33
эээ, валидаторы, которые сами лезут в базу?О_о
вообще то валидаторы и так не привязаны к моделе, взглини ка
$validator = Validator::make($request->all(), [
            'title' => 'required|unique:posts|max:255',
            'body' => 'required',
        ]);
вполне себе сервис
nnnikolay
@nnnikolay
Jul 31 2015 15:34
да
просто мне нужны сценарии и некоторые вещи по этому над этими валидаторами я сделал свой сервис все ок
Paul Klementyev
@klermonte
Jul 31 2015 15:35
ты нарушаешь таким образом принцип единственной ответственности, валидаторы ну никак не должны знать о бд
nnnikolay
@nnnikolay
Jul 31 2015 15:35
эээ, валидаторы, которые сами лезут в базу?О_о
разве твой пример в базу не лазит ?
Paul Klementyev
@klermonte
Jul 31 2015 15:35
нет, не лезет
nnnikolay
@nnnikolay
Jul 31 2015 15:36
а это что ? unique:posts
Paul Klementyev
@klermonte
Jul 31 2015 15:36
оу, тут да, соглашусь, косяк
nnnikolay
@nnnikolay
Jul 31 2015 15:36
не косяк а необходимость по другому никак
Paul Klementyev
@klermonte
Jul 31 2015 15:36
я думал ты данные, которые валидировать собираешься там получаешь
nnnikolay
@nnnikolay
Jul 31 2015 15:36
потому как если думать о слоеной архитектуре есть валидация на уровне бизнес модели а есть валидация на уровне бд

я думал ты данные, которые валидировать собираешься там получаешь

не понял тебя

у меня ситуация такая на вход пришло два поля, мне нужно через запрос к бд узнать удовлетворяют ли значения этих полей определенным условия которые есть только в БД
Paul Klementyev
@klermonte
Jul 31 2015 15:37
по этому я решил что для кейзов когда необходима валидация в дата слое есть смысл писать кастомные валидаторы которые будут делать запрос(ы) либо через дата леер (ORM) или на прямую SQLить
вот тут, зачем валидатор будет лезть в базу?
за тем же, что и стандартный? напрмер на уникальность проверить?
nnnikolay
@nnnikolay
Jul 31 2015 15:38
проверка много сложнее и SQL на 10к строк
но да в принципе за тем же .. т.к. это проверка уже другого уровня (на другом слое)
Paul Klementyev
@klermonte
Jul 31 2015 15:39
что что? десятитысячестроковый sql?O_O
nnnikolay
@nnnikolay
Jul 31 2015 15:39
10-ок
десяток
Paul Klementyev
@klermonte
Jul 31 2015 15:39
фух:D
nnnikolay
@nnnikolay
Jul 31 2015 15:39
выдыхай бобер (с)

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

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

Paul Klementyev
@klermonte
Jul 31 2015 15:41
тебе нужно реализовать интерфейс \Illuminate\Validation\PresenceVerifierInterface
nnnikolay
@nnnikolay
Jul 31 2015 15:42
тебе нужно реализовать интерфейс \Illuminate\Validation\PresenceVerifierInterface
не вижу смысла в этих двух методах в моем случае что я выше описал как они помогут ?
Paul Klementyev
@klermonte
Jul 31 2015 15:42
вернут тебе количество самолетов летающих в этот город
хотя да, там проблема в том, что только одно поле можно передать
https://github.com/felixkiss/uniquewith-validator не решит часть проблем?
nnnikolay
@nnnikolay
Jul 31 2015 15:45
я нашел другой :) вот сейчас пытаюсь понять про один из его интересных методов, но за ссылку спасибо сейчас гляну
Paul Klementyev
@klermonte
Jul 31 2015 15:52
Мне на самом деле больше нравится подход, когда модель сама себя валидирует, как в Yii или Propel
nnnikolay
@nnnikolay
Jul 31 2015 15:53
да в Yii кажется это удобно.. но по факту согласись, модели в ActiveRecord и так перегружены а еще и сценарии и там такая структура получается что мама не горюй
я к тому что в моделям им делать нечего.. просто нужно элегантное решение как валидировать данные на дб слое и все
по большому счету через композицию валидатор ничего не нарушая прося какой-то метод свалидировать а вот то как этот метод валидирует это уже зона отвественности того объекта разве нет ?
предположим мы за инжектили объект airplane в валидатор и на основании рулсов валидатор сделает вызов $this->airplaneValidator->canAirplaneFlyToCity($city_id, $plane_id)
Maxim
@Big-Shark
Jul 31 2015 15:59
@klermonte @nnnikolay модель не должна сама себя валидировать в превычном виде, модель может кидать эксепшен если пришло не то что ожидалось, но это не валидация как таковая
Paul Klementyev
@klermonte
Jul 31 2015 16:06
@Big-Shark почему не должна? Если смотреть на валидность как на состояние, то все логично, объект знает свое состояние, кому как не ему знать свое состояние?
Есть шаблон Information Expert который говорит, что данные должны обрабатываться там, где они находятся, так почему бы данным модели не обработаться в модели?
Maxim
@Big-Shark
Jul 31 2015 16:07
@klermonte смотри, в какой момент ты должен получить ошибку?
$obj->setInteger('test');
$obj->isValid();
$obj->save();
nnnikolay
@nnnikolay
Jul 31 2015 16:09
@klermonte это интересно, но с другой стороны если модель занимается валидацией а еще и сохранением, удалением и т.д. то как бы SOLID viloance
Paul Klementyev
@klermonte
Jul 31 2015 16:10
не не не, модель не занимается валидацией, пусть будет сервис валидатора, но знать о своем состоянии валидности она должна, пусть спросит у валидатора
nnnikolay
@nnnikolay
Jul 31 2015 16:11
да но тогда получается валидатор должен знать какой модели он валидирует данные
и хранить это состояние
Paul Klementyev
@klermonte
Jul 31 2015 16:12
@Big-Shark isValid() должен вернуть boolean валидности, save() должен вернуть false, если валация внутри него не прошла
@nnnikolay ничего он не будет знать, ему модель даст свои данные и правила валидации, он тупой ваще
Maxim
@Big-Shark
Jul 31 2015 16:12
@klermonte модель должна быть всегда валидной, то есть при присваивании не верных значений модель должна кинуть эксепшен, и вот тут так получается, что мы не можем провалидировать ее адекватно, так как первое-же присвоение выдаст ошибку
Paul Klementyev
@klermonte
Jul 31 2015 16:13
@Big-Shark по-твоему невалидных моделей в системе быть не может?
Maxim
@Big-Shark
Jul 31 2015 16:13
@klermonte модель может отдать только массив правил валидации так сказать
@klermonte не может
Paul Klementyev
@klermonte
Jul 31 2015 16:13
@Big-Shark если есть required поля, при создании пустой модели она не валидна
ну, по-твоему если
@Big-Shark или мы склонировали модель с уникальным валидатором, тоже сразу падаем?
Maxim
@Big-Shark
Jul 31 2015 16:14
@klermonte смотри, у нас есть поля price и qty, мы их перемножаем, и вот тут у нас почемуто в price оказался текст, и мы еще до валидации может подсчитать amount, и получим тут ерунду.
@klermonte если мы рекваер поле пытаемся достать, и оно нулл, модель должна кинуть эксепшен
Roman Tsiupa
@dracony
Jul 31 2015 16:15
@Big-Shark "@klermonte не может"
esli ty delajesh
$model = new Model();
$model->title = 'Welcome';
i 'title' - objazatelnoe pole
to posle pervoj stroki u tebja v sisteme nevalidnaja model
Paul Klementyev
@klermonte
Jul 31 2015 16:16
дык и я про что
Roman Tsiupa
@dracony
Jul 31 2015 16:16
toljko posle vtoroj stroki ona stala validnoj
Paul Klementyev
@klermonte
Jul 31 2015 16:17
@Big-Shark для твоего случая поможет сеттер
Maxim
@Big-Shark
Jul 31 2015 16:17
@klermonte если мы склонировали ее, то она будет валидна, но при сохранении мы конечно получим ошибку. но тут уже сложности реализации
Paul Klementyev
@klermonte
Jul 31 2015 16:17
@Big-Shark но у нас в системе 2 невалидные модели же
Roman Tsiupa
@dracony
Jul 31 2015 16:17
"при сохранении " eto drugaja istorija
Maxim
@Big-Shark
Jul 31 2015 16:18

@dracony а если я делаю примерное так

new Model(['title' => 'Title');

То будет норм

Roman Tsiupa
@dracony
Jul 31 2015 16:18
fakt tot chto sozdan instans i on ne validen
no ty mozhesh tak ine sdelatj
esli ty sdelajesh prosto new Model eksepshna ne budet
Paul Klementyev
@klermonte
Jul 31 2015 16:18
да почему мы вообще должны с эксепшном падать?
Roman Tsiupa
@dracony
Jul 31 2015 16:19
вобще то нормально єто когда в системе нет невалидних моделей
Maxim
@Big-Shark
Jul 31 2015 16:19
@klermonte ну как, данные не валидны)
Roman Tsiupa
@dracony
Jul 31 2015 16:19
но для этого надо создать фабрики
типа
$modelFactory->createModel($title);
с обязательными параметрами
Maxim
@Big-Shark
Jul 31 2015 16:19
ок, а как мы должны проверять то что пароль ввели 2 раза, и пароли совпадают, при создании пользователя
Roman Tsiupa
@dracony
Jul 31 2015 16:20
в фабрике
Paul Klementyev
@klermonte
Jul 31 2015 16:20
@Big-Shark ты ж нарисовал мето валидации, вот там)
Roman Tsiupa
@dracony
Jul 31 2015 16:20
тоесть
Paul Klementyev
@klermonte
Jul 31 2015 16:20
или внутри save()
Roman Tsiupa
@dracony
Jul 31 2015 16:20
ты валидуй не модель
а запрос
и толко когда запрос валиден
создавай модель
Paul Klementyev
@klermonte
Jul 31 2015 16:20
@dracony а если я вообще не в веб приложении а в консольном?
нету запроса
Roman Tsiupa
@dracony
Jul 31 2015 16:20
а не сначала наклепать а потом посмотреть заведется ли
Paul Klementyev
@klermonte
Jul 31 2015 16:20
а данные есть
Roman Tsiupa
@dracony
Jul 31 2015 16:21
запрос есть всегда
не всегда ХТТП запрос
Paul Klementyev
@klermonte
Jul 31 2015 16:21
в консоли?О_о
Roman Tsiupa
@dracony
Jul 31 2015 16:21
но в консоле у тебя тоже запрос
Paul Klementyev
@klermonte
Jul 31 2015 16:21
это ввод, другое чуток
Maxim
@Big-Shark
Jul 31 2015 16:21
@klermonte с чего это в консольном нет запроса, вот как раз валидацичя как сервис тут и помогает, валидироватьм можно все, хоть файлы
Roman Tsiupa
@dracony
Jul 31 2015 16:21
ну ввод
Paul Klementyev
@klermonte
Jul 31 2015 16:21
@Big-Shark я ж не спорю с отдельным валидатором, я даже за
Roman Tsiupa
@dracony
Jul 31 2015 16:21
я щас объясню зачем
Paul Klementyev
@klermonte
Jul 31 2015 16:22
просто пусть моедель его использует для того, чтобы узнать, валидна ли она
Maxim
@Big-Shark
Jul 31 2015 16:22
@klermonte смотри, в консоли тебе присылают джесон 1 из параметров, и его тебе надо провалидировать, но это не совсем модель, и как ты это будешь делать?
Roman Tsiupa
@dracony
Jul 31 2015 16:22
разные места могут иметь разные понятин валидности
например если я создаю юзера с формы регистрации
мне надо подтверждение пароля
а вот если я делаю с консоли
с параметра
--пассворд = бла
мне его не надо
Paul Klementyev
@klermonte
Jul 31 2015 16:23
никто не хочет отобрать у вас валидацию запроса
я просто хочу в дополнение получить валидацию модели
Roman Tsiupa
@dracony
Jul 31 2015 16:23
зачем?
модель создаать через фабрику
всегда валидную
Maxim
@Big-Shark
Jul 31 2015 16:24
@klermonte смотри, вот что делать с повторениям пароля и емейла допустим при регистрации?
Paul Klementyev
@klermonte
Jul 31 2015 16:24
@Big-Shark ты ж нарисовал мето валидации, вот там)
или внутри save()
Roman Tsiupa
@dracony
Jul 31 2015 16:24
при чем тут сейв к потверждению пароля?
он ведь в базу не пишется
нафига он модели?
Paul Klementyev
@klermonte
Jul 31 2015 16:25
ну да, приходим к неизбежным сценариям
Maxim
@Big-Shark
Jul 31 2015 16:26
@klermonte угу, а потом как в юии получается, что у нас не валидация а х.. пойми что.
Roman Tsiupa
@dracony
Jul 31 2015 16:26
валидатор должен быть отдельно
Paul Klementyev
@klermonte
Jul 31 2015 16:26
да он и есть отдельно)
Roman Tsiupa
@dracony
Jul 31 2015 16:26
когда модель еще к форме прикручивают это вобще пипец
Paul Klementyev
@klermonte
Jul 31 2015 16:26
ну я ж 3 раза повторил
Roman Tsiupa
@dracony
Jul 31 2015 16:26
нифига он не отдельно
если он в сейв
Maxim
@Big-Shark
Jul 31 2015 16:26
ок, а если мне нужно провалидировать джесон, в котором приходят данные для 2 разных моделий, пользователь, и его профиль, как делать?
Roman Tsiupa
@dracony
Jul 31 2015 16:26
сейв не должен вызыватся на неваоидной модели
невалидная модель не должна существовать
Paul Klementyev
@klermonte
Jul 31 2015 16:27
ты ж сам показал ее существование
Roman Tsiupa
@dracony
Jul 31 2015 16:27
где?
Paul Klementyev
@klermonte
Jul 31 2015 16:27
esli ty delajesh
$model = new Model();
$model->title = 'Welcome';
i 'title' - objazatelnoe pole
to posle pervoj stroki u tebja v sisteme nevalidnaja model
Roman Tsiupa
@dracony
Jul 31 2015 16:27
я сказал что так не надо делать
что должна быть фабрика
Paul Klementyev
@klermonte
Jul 31 2015 16:28
тогда вся документация ларавел не правильная получается
Roman Tsiupa
@dracony
Jul 31 2015 16:28
я даже не буду поднимать эту тему сегодня
но да
Paul Klementyev
@klermonte
Jul 31 2015 16:28
@dracony она для тебя больная?)
Maxim
@Big-Shark
Jul 31 2015 16:29
@klermonte почему неправельная?
nnnikolay
@nnnikolay
Jul 31 2015 16:29
@klermonte :-)
Paul Klementyev
@klermonte
Jul 31 2015 16:29
потому что там модели создаются не фабриками а в контроллерах, и находятся в невалидном состоянии
ну это просто в контексте нашей беседы
Maxim
@Big-Shark
Jul 31 2015 16:30
@klermonte ааа, ну это да)
nnnikolay
@nnnikolay
Jul 31 2015 16:30
В документации вообще все очень простые примеры и почти нет бест практис
точнее так иногда примеры сложные но контекст их максимально общий для большинства задач веба
но есть исключения :) и вот тогда нужно плясать )
иногда есть граничные случаи и это тоже проблема.. а сообщество ларавел предлагает решения порой расходящиеся с общепринятыми в ООП мире :)
Paul Klementyev
@klermonte
Jul 31 2015 16:31
у меня вопрос возникает тогда, вот я вижу собрались опытные ребята, которые не одну ахритектуру уже по SOLID придумали, и ругают ларавел за несоответствие, но почему же все еще используют его?
Maxim
@Big-Shark
Jul 31 2015 16:32
@klermonte а больше ничего и нет)
Paul Klementyev
@klermonte
Jul 31 2015 16:32
симфони же, или не?
nnnikolay
@nnnikolay
Jul 31 2015 16:32

симфони же, или не?

честно скажу хочу попробовать и следующий раз а может и в этот, я все же доберусь до него )

Maxim
@Big-Shark
Jul 31 2015 16:32
@klermonte кусок гомна ваш симфони, как же он меня за......, он чуть лучше чем юии
Paul Klementyev
@klermonte
Jul 31 2015 16:33
О, ну и последняя предсмертная попытка умирающей идеии :D допустим валидность модели изменяется со временем без ее изменения, и нам надо периодически избавляться от невалидных, вот тогда точно может пригодится знание модели состоянии валидности себя
а хотя, чем нам мешает вызывать сервис валидатора вне модели
блин, все убедили)
Maxim
@Big-Shark
Jul 31 2015 16:34
@klermonte )))
nnnikolay
@nnnikolay
Jul 31 2015 16:34
я и вызываю его вне модели
Paul Klementyev
@klermonte
Jul 31 2015 16:35
хорошо, тогда как решить задачу дублирования правил для разных запросов одной модели?
Maxim
@Big-Shark
Jul 31 2015 16:35
@klermonte подробней можно?
@klermonte у тебя модель может знать правила валидации свои
@klermonte или у тебя может быть просто отдельная валидация под эту модель, которую ты и будешь вызывать
nnnikolay
@nnnikolay
Jul 31 2015 16:37
@klermonte сценарии
Paul Klementyev
@klermonte
Jul 31 2015 16:37
ну есть RegistrationRequest OauthRegistrationRequest EditUserRequest все три имеют практически одинаковый набор правил, за исключением одного двух, как бы выделить одинаковое ядро и смержить с разницей с ним?
nnnikolay
@nnnikolay
Jul 31 2015 16:37
по этому правила у меня в отдельном месте не в моделях
Paul Klementyev
@klermonte
Jul 31 2015 16:38
@nnnikolay только что же решили что это ниочень)
nnnikolay
@nnnikolay
Jul 31 2015 16:38
и там в том месте есть сценарии
Maxim
@Big-Shark
Jul 31 2015 16:38
@klermonte наследование, трейты, отдельный класс который возвращяет общие поля?
nnnikolay
@nnnikolay
Jul 31 2015 16:38
у нас есть модель юзер
иногда мы его регим через oauth иногда н апрямую иногда из админки
это все разные сценарии регистрации т.к. скорее всего разный набор полей
@Big-Shark наследование плохо, т.к. сто процентов придешь к тому что поле перестанет быть общем для всех случаев
а вот в списке сценариев может быть дефолтный :) применяемый по дефолту
Maxim
@Big-Shark
Jul 31 2015 16:39
@nnnikolay так нас же учили работать с массивами, мы всегда можем вырезать что не надо, и добавить что надо)
nnnikolay
@nnnikolay
Jul 31 2015 16:40
@Big-Shark мы все можем... но нужно ли нам ? стоит исходить от того что есть наследование, и какой тип наследования тут уместен, в контексте задачи
Paul Klementyev
@klermonte
Jul 31 2015 16:40
@Big-Shark в принципе да, подходит базовый класс UserRequest, да да, а дочерние просто возвращают array_merge(parent::rules(), [...])
трейт не очень подходит
nnnikolay
@nnnikolay
Jul 31 2015 16:41
а как потом тестить с парентом ?
Maxim
@Big-Shark
Jul 31 2015 16:41
@nnnikolay я преложил вариант, у 2 реквестов как минимум общий предок, рееквест регистрации, но вообще надо смотреть на наборы полей и прочее, чтоб более конкретно говоорить что лучше или хуже.
Paul Klementyev
@klermonte
Jul 31 2015 16:42
@Big-Shark я просто никак не могу понять, как трейт можно использовать, можешь привести пример?
nnnikolay
@nnnikolay
Jul 31 2015 16:42
@Big-Shark если по рассуждать абстрактно... наследование объектов или нестед эелементы массива )
чего то в доке не нахожу, как правильно в правилах Ларавелу задать кастомный класс@метод для валидации ? типа 'ruleA' => 'required|className@methodName' ??
Maxim
@Big-Shark
Jul 31 2015 16:44
@klermonte также как наследование)
nnnikolay
@nnnikolay
Jul 31 2015 16:45
@klermonte также как наследование)
вообще-то нет :) так же как композиция
Paul Klementyev
@klermonte
Jul 31 2015 16:45
@Big-Shark не, мне кажется логичнее все-таки наследование использовать, ведь тут мы выносим что-то общее у всех элементов, так что это стопудово вертикальное наследование
вот если напрмер выделить что-то что есть не у всех, но у многих, тут да, трейт
Maxim
@Big-Shark
Jul 31 2015 16:46
@nnnikolay зануда)
nnnikolay
@nnnikolay
Jul 31 2015 16:46
@Big-Shark больше не буду
так что с синтаксисом никто не помнит ? (см. выше)
@nnnikolay Validator::extend('foo', 'FooValidator@validate');
Maxim
@Big-Shark
Jul 31 2015 16:47

@nnnikolay после того как вставил цитаты, вставь еще пустую строчку, чтоб было так

test

зануда)

nnnikolay
@nnnikolay
Jul 31 2015 16:47
@Big-Shark спс
@klermonte это я видел но как в правиле задать то ?
Paul Klementyev
@klermonte
Jul 31 2015 16:48
так первый параметр же
nnnikolay
@nnnikolay
Jul 31 2015 16:48
?
Paul Klementyev
@klermonte
Jul 31 2015 16:48
первый параметр это имя твоего валидатора, его и прописывай
nnnikolay
@nnnikolay
Jul 31 2015 16:48
неее.. я этого не хочу :)
$v = Validator::make($data, [
'email' => 'required|email',
'games' => 'required|numeric',
]);
Maxim
@Big-Shark
Jul 31 2015 16:49
@klermonte $v->sometimes('reason', 'required|max:500', function($input) {
return $input->games >= 100;
});
3 параметром сюда в виде массива с 2 значениеми класс и функция
nnnikolay
@nnnikolay
Jul 31 2015 16:49
как вот тут задать games провалидировать через отдельный метод /класс
Paul Klementyev
@klermonte
Jul 31 2015 16:49
Validator::extend('foo', 'FooValidator@validate');
$v = Validator::make($data, [
'email' => 'required|email|foo',
'games' => 'required|numeric',
]);
nnnikolay
@nnnikolay
Jul 31 2015 16:49
жеееесть
Paul Klementyev
@klermonte
Jul 31 2015 16:49
А, ну если только одиночно
nnnikolay
@nnnikolay
Jul 31 2015 16:49
пойду домой.. жееееееесть .. ну это ж не естественно :(

@klermonte да для одного поля используя вот такой вот синтаксиси

$v = Validator::make($data, [
'email' => 'required|email',
'games' => 'required|класс-метод',
]);

Paul Klementyev
@klermonte
Jul 31 2015 16:51
$v = Validator::make($data, [
'email' => 'required|email',
'games' => ['required', 'numeric', ['Games', 'validate']],
]);
Maxim
@Big-Shark
Jul 31 2015 16:51
@klermonte нет, тут через @
Paul Klementyev
@klermonte
Jul 31 2015 16:51
не прокатит?
аха, на обум:D
nnnikolay
@nnnikolay
Jul 31 2015 16:52

т.е. вот так вот должно работать ?

$v = Validator::make($data, [
'email' => 'required|email',
'games' => 'required|КЛАСС@МЕТОД',
]);

??

Maxim
@Big-Shark
Jul 31 2015 16:53
должно
nnnikolay
@nnnikolay
Jul 31 2015 16:53
просто в доках не видел.. ладно доеду до дома попробую
Maxim
@Big-Shark
Jul 31 2015 16:53
Это надо будить тех кто лару использует, они подскажут.
Paul Klementyev
@klermonte
Jul 31 2015 16:54
@Big-Shark вот это поворот:D
Maxim
@Big-Shark
Jul 31 2015 16:54
@klermonte а в чем поворот то?
Paul Klementyev
@klermonte
Jul 31 2015 16:54
ну что не используешь
Maxim
@Big-Shark
Jul 31 2015 16:55
@klermonte на работе у меня симфони1 и 2, для личных проектов лара, но они у меня не так часто.
Paul Klementyev
@klermonte
Jul 31 2015 17:01
@nnnikolay покопался по коду, если ты не добишь вот таким образом свой валидатор Validator::extend('foo', 'FooValidator@validate'); то не сможешь его использовать, так что в сервис провайдер пихай и будет тебе счастье
powered357
@powered357
Jul 31 2015 17:39
где скачать можно фреймворк?
Paul Klementyev
@klermonte
Jul 31 2015 17:41
powered357
@powered357
Jul 31 2015 17:42
composer create-project laravel/laravel --prefer-dist - это ввел но папки vender нету
т.е создалось только приложение

D:\OpenServer\domains\laravel\laravel>composer global require "laravel/installer
=~1.1"
Warning: This development build of composer is over 30 days old. It is recommend
ed to update it by running "d:\openserver\modules\php\PHP-5.6\composer.phar self
-update" to get the latest version.
Changed current directory to C:/Users/└эфЁхщ/AppData/Roaming/Composer
Warning: This development build of composer is over 30 days old. It is recommend
ed to update it by running "d:\openserver\modules\php\PHP-5.6\composer.phar self
-update" to get the latest version.
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)

[RuntimeException]
Could not load package fxp/composer-asset-plugin in http://packagist.org: [UnexpectedValueException] Could not parse version constraint ^1.0: Invalid version string "^1.0"

[UnexpectedValueException]
Could not parse version constraint ^1.0: Invalid version string "^1.0"

require [--dev] [--prefer-source] [--prefer-dist] [--no-progress] [--no-update] [--update-no-dev] [--update-with-dependencies] [--ignore-platform-reqs] [packages1] ... [packagesN]

Paul Klementyev
@klermonte
Jul 31 2015 17:44
Обнови компосер
И попробуй ещё раз
powered357
@powered357
Jul 31 2015 17:44
какой командой?
Paul Klementyev
@klermonte
Jul 31 2015 17:45
У тебя в выводе она
d:\openserver\modules\php\PHP-5.6\composer.phar self
-update
powered357
@powered357
Jul 31 2015 17:58
вроде устанавливает, спасибо огромное!
OsipovMN
@projct1
Jul 31 2015 19:06
РЕБЯТКИ, создал модель без полей updated_at и created_at
но при попытке вставить запись, ругается что не таких полей
они что, обязательные?
JhaoDa
@jhaoda
Jul 31 2015 19:07
@rorc да
Роман Сохарев
@greabock
Jul 31 2015 19:07
protected $timestamps = false;
JhaoDa
@jhaoda
Jul 31 2015 19:07
@rorc но если бы ты читал документацию, то знали бы как это отменить
@greabock ну вот шо ты
OsipovMN
@projct1
Jul 31 2015 19:08
@jhaoda сразу всю документацию прочесть толку нет
@greabock спс))
Роман Сохарев
@greabock
Jul 31 2015 19:08
хотя нет...
оно public
OsipovMN
@projct1
Jul 31 2015 19:08
да
JhaoDa
@jhaoda
Jul 31 2015 19:09
@rorc если ты пару раз прочтешь всю доку, то у тебя в голове будет некий индекс
Плохой, медленный, но будет
OsipovMN
@projct1
Jul 31 2015 19:09
кстати, вместо parent_id, можно использовать лучше path ведь?
ну например чтобы по урлам нахолдить сразу, например путь cars/mini, тоже уникальный как бы
нафига parent_id, он тока для удобства же и в админке удобней через него
Роман Сохарев
@greabock
Jul 31 2015 19:10
@rorc path используют при реализации паттерна MP, если у тебя простой AL, то семантически правильнее будет использовать parent_id
OsipovMN
@projct1
Jul 31 2015 19:11
MP?
AL?
Роман Сохарев
@greabock
Jul 31 2015 19:13
MP - Materialized Path,
AL - Adjacency List
А есть еще
CT - Closure Table
NS - Nested Sets
Это все шаблоны (паттерны) организации древовидных структур
JhaoDa
@jhaoda
Jul 31 2015 19:14
@greabock я думаю, он совсем не это имел в виду
OsipovMN
@projct1
Jul 31 2015 19:14
для обычного интернет-магазина, где каталог может быть неограниченной вложенности
Роман Сохарев
@greabock
Jul 31 2015 19:15
@jhaoda видимо это =)
OsipovMN
@projct1
Jul 31 2015 19:15
выборка всё равно по урлу происходит, например /catalog/mobile/note_aks/chehly_dlya_noutbukov/
JhaoDa
@jhaoda
Jul 31 2015 19:15
НУ тогда с формулировками проблемы у человека...
OsipovMN
@projct1
Jul 31 2015 19:15
нафига парент_айди
путь тоже уникальный всегда будет
Роман Сохарев
@greabock
Jul 31 2015 19:16
для того, чтобы ты знал что во что вложено и мог построить дерево каталогов?
Roman Tsiupa
@dracony
Jul 31 2015 19:17
a esche luchshe neo4j
Роман Сохарев
@greabock
Jul 31 2015 19:17
граф - это другой разговор
OsipovMN
@projct1
Jul 31 2015 19:18
ну с путём тоже можно построить...
просто менее удобно
Роман Сохарев
@greabock
Jul 31 2015 19:20

выборка всё равно по урлу происходит, например /catalog/mobile/note_aks/chehly_dlya_noutbukov/

технически это MP

OsipovMN
@projct1
Jul 31 2015 19:21
да
как fetchPairs сделать...
Category::all(['id', 'name'])->keyBy('id') тока айди ключём делает
чтобы в селект этот массив передать
Роман Сохарев
@greabock
Jul 31 2015 19:28
я не понял сути вопроса =(
OsipovMN
@projct1
Jul 31 2015 19:28
pluck, нашёл
PDO::FETCH_PAIRS
аналог
кстати есть какой-нибудь фильтр встроенный, который строки 'null' в NULL преобразует, чтобы вручную не делать это постоянно?
а то очень удобно в качестве значений дефолтовых делать в формах
Paul Klementyev
@klermonte
Jul 31 2015 19:34
фильтр где?
OsipovMN
@projct1
Jul 31 2015 19:34
в ларавеле
ну или не фильтр, просто возможность
Paul Klementyev
@klermonte
Jul 31 2015 19:34
это понятно))
так strtoupper()
OsipovMN
@projct1
Jul 31 2015 19:35
а то в форме NULL просто в пустую строку превращается
чё?
'NULL' to NULL
Paul Klementyev
@klermonte
Jul 31 2015 19:35
@rorc сформулируй плиз вопрос по-человечески)
OsipovMN
@projct1
Jul 31 2015 19:36
в форме когда значение по умолчанию делаешь, null надо же указать, типа не выбрано
приходится null строкой делать в селекте например (select)
Paul Klementyev
@klermonte
Jul 31 2015 19:36
ну да, оно же заставляет брать значение из модели, если она привязана
OsipovMN
@projct1
Jul 31 2015 19:37
когда сохраняешь поле, null строчный надо превратить в null пхпшный
автоматом это делается?
Paul Klementyev
@klermonte
Jul 31 2015 19:37
ну мутатор сделай
или как там они в ларавеле называют сеттеры
setCategoryIdAttribute($value)
что-то в этом роде
OsipovMN
@projct1
Jul 31 2015 19:38
ну да, придётся так...
удобно было б чтоб на уровне ядра делалось))
Paul Klementyev
@klermonte
Jul 31 2015 19:39
так ты можешь например при формировании массива для селекта строчный 'null' заменить на null или пустую строку
Artur Gafurov
@assurrussa
Jul 31 2015 19:39
@rorcУ тебя в БД по дефолту null не ставится?
или тебе для условия надо?
OsipovMN
@projct1
Jul 31 2015 19:41
@assurrussa ставится, просто если с формы прилетает значение, оно строкой 'null'
надо disabled делать тогда, чтобы оно отсутствовало в реквесте и тогда по умолчанию проставится на уровне базы
Paul Klementyev
@klermonte
Jul 31 2015 19:41
вообще странно:D у тебя при формировании селекта там есть элемент в массиве с ключом 'null'?
Artur Gafurov
@assurrussa
Jul 31 2015 19:41
да просто я не понимаю, если у меня в форме ничего не выбрано то оно и не трогается зачем ему что-то присваивать типо NULL
OsipovMN
@projct1
Jul 31 2015 19:43
@klermonte ну да, типа ничего не выбрано
оно будет пустой строкой? а в базу что проставится?
если мне null надо в базу записать
Paul Klementyev
@klermonte
Jul 31 2015 19:44
если там int то null и проставится
iGloom
@iGloom
Jul 31 2015 19:45

а в Query Builder в where() есть возможность, используя замыкания, или как-то еще, "отменить" where?
интересует какая-то конструкция типа (код просто для иллюстрации, я вижу, что он кривой)

$source = Source::where('username',$login)->orWhere(function($query){
            if ($a == $b) {
                $query->where('a',$b);
            } else {
                return false;
            }
        });

то есть возможность вообще отменить where? потому что при попытке ничего не добавлять в query ломается запрос.

OsipovMN
@projct1
Jul 31 2015 19:46
@klermonte где там? мне null а базу по умолчанию надо записать, если ничего не выбрано в селекте
Artur Gafurov
@assurrussa
Jul 31 2015 19:46
@rorc так и все ровно не понятно зачем ты так усложняешь?
JhaoDa
@jhaoda
Jul 31 2015 19:46
@iGloom ну так ты и не добавляй, зачем return false?
OsipovMN
@projct1
Jul 31 2015 19:46
@assurrussa а как иначе?
iGloom
@iGloom
Jul 31 2015 19:46
@jhaoda в последней попытке у меня образовался пустой orWhere и сломал запрос. сейчас перепроверю
Paul Klementyev
@klermonte
Jul 31 2015 19:47
@rorc в поле таблицы, если это поле INT то при попытке записать в него пустую строку там сохранится NULL
Artur Gafurov
@assurrussa
Jul 31 2015 19:47
@rorc если по дефолту у тебя NULL то и поставится NULL
Paul Klementyev
@klermonte
Jul 31 2015 19:47
какой-то фигней чел страдает:D
Artur Gafurov
@assurrussa
Jul 31 2015 19:48
@rorc тебе надо срочно поучить Mysql))
OsipovMN
@projct1
Jul 31 2015 19:49
@assurrussa @klermonte хмммммммммммммммммм........
@klermonte нифига, пытаюсь вставить пустую строку вместо числа, ругается на внешний ключ, который ведёт на эту же таблицу
поэтому null надо вставлять
Paul Klementyev
@klermonte
Jul 31 2015 19:52
так-то foreign key не может быть null
OsipovMN
@projct1
Jul 31 2015 19:53
@klermonte одну запись я уже создал, в parent_id null записался и всё норм вставилось
Paul Klementyev
@klermonte
Jul 31 2015 19:54
пришли вывод create table
@rorc скорее всего тебе это удалось потому, что при инсерте первой записи в ней еще не было ничего и этот нулл прокатил
OsipovMN
@projct1
Jul 31 2015 19:58
@klermonte без проблем вставил вторую запись
null на то он и null , отсутствие значения
сам подучи mysql))
Artur Gafurov
@assurrussa
Jul 31 2015 20:01
@rorc у тебя в писан foreign key на уровне БД?
OsipovMN
@projct1
Jul 31 2015 20:01
@assurrussa как-то по-другому может быть?
Paul Klementyev
@klermonte
Jul 31 2015 20:02
@assurrussa я хз как так:D может я чего действительно упустил?
Artur Gafurov
@assurrussa
Jul 31 2015 20:02
@rorc может поле быть которое ссылается на другую запись
OsipovMN
@projct1
Jul 31 2015 20:03
@klermonte в поле int нельзя ничего кроме инта или null вставить
Paul Klementyev
@klermonte
Jul 31 2015 20:03
@rorc и? я удивлен до глубины души)
Artur Gafurov
@assurrussa
Jul 31 2015 20:03
@klermonte нет если у него foreign key на уровне БД прописан то сама База данных не должна пропустить
Paul Klementyev
@klermonte
Jul 31 2015 20:04
но ты же видишь:D на скрине нулы
он мне прислал с норм кючами внешними
OsipovMN
@projct1
Jul 31 2015 20:04
короче решил вопрос банально http://joxi.ru/krD9YzGtdM1emp
Paul Klementyev
@klermonte
Jul 31 2015 20:05
KEY shop_categories_parent_id_foreign (parent_id),
CONSTRAINT shop_categories_parent_id_foreign FOREIGN KEY (parent_id) REFERENCES shop_categories (id) ON DELETE CASCADE
блин, довели человека, ставлю мускуль на венду
нифига он весит оказывается, 350 метров!
Roman Tsiupa
@dracony
Jul 31 2015 20:27
про меня уже славу пустили: http://habrahabr.ru/post/263551/#comment_8521713
JhaoDa
@jhaoda
Jul 31 2015 20:30
Так ведь правда написана
Roman Tsiupa
@dracony
Jul 31 2015 20:32
так у меня больше фраз)
powered357
@powered357
Jul 31 2015 20:33
есть ли какойто тулбар запросов бд ?
OsipovMN
@projct1
Jul 31 2015 20:38
как выполнить в модели find, тока одного поля ?
Paul Klementyev
@klermonte
Jul 31 2015 20:38
@rorc select(['fieldname'])
Alexander Egorov
@Amegatron
Jul 31 2015 20:40
Привет всем :) Давненько не заходил :)
powered357
@powered357
Jul 31 2015 20:41
я его установил но включить немогу(
OsipovMN
@projct1
Jul 31 2015 20:42
почему большинство методов не определено? http://joxi.ru/YmEkPzGcLZboA6
они магически создаются типа?
find тоже не находит
Paul Klementyev
@klermonte
Jul 31 2015 20:42
@powered357 провайдер и алиас прописал? php artisan vendor:publish сделал?
@rorc покопайся в коде) много нового для себя обнаружишь, например то, что в __call() модели вызываются методы queryBuilder a
@rorc и селект делает несколько другую весчь, то, что тебе надо делается через $this->slug
OsipovMN
@projct1
Jul 31 2015 20:46
@klermonte мне slug надо по айдишке достать
$this->selectSlugById($id)
как это сделать то)
nnnikolay
@nnnikolay
Jul 31 2015 20:47
@klermonte Я вернулся, да я уже тоже глянул в коде что там вызов идет только $this->$method для кастомной валидации.. т.е. нужен способ попасть в $this->extension не через Validator::extend ити его раз. Можно унаследовать от системного валидатора и перегрузить метод parseStringRule что б если есть спец символ добавлятьб код в extension и тогда можно будет через правила попадать в кастомный метод валидатора..
OsipovMN
@projct1
Jul 31 2015 20:47
кроме как так конечно
$this->select('slug')->where('id', $parentId)->get()
Paul Klementyev
@klermonte
Jul 31 2015 20:48
$this->parent->slug
если конечно ты определил релейшн
@nnnikolay дык а чем не устраивает extend()?
@nnnikolay можно ж кучу своих валидаторов в сервис провайдере зарегать и дергать по красивым именам и не по разу
OsipovMN
@projct1
Jul 31 2015 20:49
@klermonte не канает
Paul Klementyev
@klermonte
Jul 31 2015 20:49
@rorc релейшн покажи
@rorc короче да, полистал документацию, действительно, ничего не мешает внешний ключ сделать nallable
nnnikolay
@nnnikolay
Jul 31 2015 20:54
@klermonte А подскажи мне п-та если я его зарегю в сервис провайдере как его надо будет описывать в правилах ?
@klermonte вот так зарегить
Validator::extend('foo', 'FooValidator@validate');
а как потом на него сослаться в rules ?
Paul Klementyev
@klermonte
Jul 31 2015 20:55
@nnnikolay foo
nnnikolay
@nnnikolay
Jul 31 2015 20:56

@klermonte и получается что б выпилить его из системы позже мне нужно будет его убирать из boot метода .. не совсем очевидно особенно для человека не знающего шибко ларавел

так а это foo должно быть уникальным ведь тогда ?

Paul Klementyev
@klermonte
Jul 31 2015 20:57
@nnnikolay ну да, уникальным, причем не пересекающимся ни с одним системным, ничего конечно не упадет, но он просто не будет вызываться
OsipovMN
@projct1
Jul 31 2015 20:57
@klermonte ну по идеи у меня модель сама на себя ссылается http://joxi.ru/D2PBPzGcWdj5r3
Paul Klementyev
@klermonte
Jul 31 2015 20:57
@nnnikolay можешь в конфиге прописать, а в бут просто проходиться по этому конфигу
@rorc не, у тебя релейшн назван parent() а по сути код внутри для categories()
nnnikolay
@nnnikolay
Jul 31 2015 20:58
@klermonte ого до конфигов я еще не дошел.. понял только что в люмене их нет ))) а есть dotenv
а как "вернуть" конфиги это еще отдельная тема для чтения )
OsipovMN
@projct1
Jul 31 2015 21:00
@klermonte не понял...
Paul Klementyev
@klermonte
Jul 31 2015 21:00
@rorc тебе в parent нужно прописать что-то вроде
return $this->belongsTo('\App\Models\Category', 'parent_id');
OsipovMN
@projct1
Jul 31 2015 21:02
@klermonte угу, и как родителя получить?)
Paul Klementyev
@klermonte
Jul 31 2015 21:02
@nnnikolay ну тогда и не включай их, просто поверь, конфигурировать в сервис провайдерах вот прям ларавел вей)
@rorc $this->parent я ж говорил
OsipovMN
@projct1
Jul 31 2015 21:02
доку не читал пока по ELOQUENT
Paul Klementyev
@klermonte
Jul 31 2015 21:02
только учти, у тебя там null может быть, значит и в $this->parent может быть null
OsipovMN
@projct1
Jul 31 2015 21:03
@klermonte null он равен
nnnikolay
@nnnikolay
Jul 31 2015 21:03
@klermonte не нравится мне что он будет глобальным (в плане доступа) а он совсем не general такой валидар а узко специфичный для кейза, данных и модели, так что попробую перегрузить валидатор да подсунуть ему то что мне надо
OsipovMN
@projct1
Jul 31 2015 21:03
@klermonte потому что я новую создаю, а не редактирую существующую категорию
Paul Klementyev
@klermonte
Jul 31 2015 21:05
@rorc
public function parent()
    {
        return $this->belongsTo(self::class, 'parent_id');
    }

    public function children()
    {
        return $this->hasMany(self::class, 'parent_id');
    }
OsipovMN
@projct1
Jul 31 2015 21:05
@klermonte спс, а как в итоге заменить эту запись на красивую и покороче)) $this->select('slug')->where('id', $parentId)->get()->slug
Paul Klementyev
@klermonte
Jul 31 2015 21:07
@rorc смотря откуда пришел $parentId, если это его же, то $this->parent->slug, если извне какой-то левый, то self::find($parentId)->slug
OsipovMN
@projct1
Jul 31 2015 21:08
@klermonte ну по идеи self::find($parentId)->slug он все поля достаёт, а мне тока slug нужен
Paul Klementyev
@klermonte
Jul 31 2015 21:09
@rorc ты вот серьезно на таких спичках экономить сейчас собрался? слыхал об антипаттерне преждевременная оптимизация?
OsipovMN
@projct1
Jul 31 2015 21:09
@klermonte да, это проблема))
ну всё равно хочется сразу норм сделать
чтобы знать
$this->select('slug')->where('id', $parentId)->get()->slug криво
Paul Klementyev
@klermonte
Jul 31 2015 21:10
@rorc забудь, поверь, никогда сразу норм не получается, ни у кого, никто не писал нормальный код, который ни разу не рефакторился
OsipovMN
@projct1
Jul 31 2015 21:11
это да, но всё-таки на будущее)
Paul Klementyev
@klermonte
Jul 31 2015 21:12
@rorc ну ты сам в принципе моб догадаться, что можно сделать вот так
$slug = self::select('slug')->find($parentId)->slug;
@rorc но это полная херня, скорее всего тебе еще понадобится этот перент, и лучше его вынести в отдельную переменную для дальнейшего использования
OsipovMN
@projct1
Jul 31 2015 21:14
@klermonte ок, спасиб)
кстати можно сделать чтобы сразу фетчилось в значение? чтобы тут было либо null либо сразу значение slug? self::select('slug')->find($id)
:)
мол, зачем мне slug получать через ->slug когда и так одно значение
как fetchColumn в PDO, очень удобно
Paul Klementyev
@klermonte
Jul 31 2015 21:18
@rorc посмотри что вернет self::find($id, ['slug'])
ну скорее всего либо массив с одни ключом, либо нулл
berpcor
@berpcor
Jul 31 2015 21:20
Возможно ли как-то выполнять команду seed после создания определенной таблицы (запуска миграции)? Оно как вообще работает. Сначала все миграции по порядку запускаются, а потом - все сиды?
Paul Klementyev
@klermonte
Jul 31 2015 21:21
@berpcor php artisan migrate --seed
да, сначала смигрирует, потом запустит сидер
OsipovMN
@projct1
Jul 31 2015 21:21
@klermonte такая же хрень, но запись короче)
Paul Klementyev
@klermonte
Jul 31 2015 21:29
@rorc нашел) self::where('id', $id)->value('slug');
OsipovMN
@projct1
Jul 31 2015 21:32
да, круто, спасиб)
berpcor
@berpcor
Jul 31 2015 21:39
@klermonte А что, если мне нужно сначала сидер запустить и только потом остальные миграции?
alst161
@alst161
Jul 31 2015 21:41
спасите. как сделать публичную папку public_html вместо public. из-за этого возникла проблема с загрузкой изображений. как решить это?
Paul Klementyev
@klermonte
Jul 31 2015 21:45
@berpcor php artisan db:seed --class=YourSeedClass
Oleg Melnik
@olegmelnik
Jul 31 2015 22:18
Всем привет
Я правильно понимаю, что в группах роутов с префиксом поддерживаются только get запросы?
berpcor
@berpcor
Jul 31 2015 22:19
Откуда такая информация?
Если так, то каков смысл в этих группах?
Это же элементарно проверяется.
Попробуй накидать форму )
Oleg Melnik
@olegmelnik
Jul 31 2015 22:20
Блин, я тупанул
csrf не переписал под новый url и paw ругался
JhaoDa
@jhaoda
Jul 31 2015 22:52
@olezko46 перед тем, как ты задал вопрос, не возникало мысли, что такое ограничение если бы и было, то о нём бы упомянули в документации?