These are chat archives for LaravelRUS/chat

26th
Jul 2015
Paul Klementyev
@klermonte
Jul 26 2015 06:07
Есть специальный статичный метод для этого $queryBuilder = User::query();
Илья.
@IlyaVorozhbit
Jul 26 2015 08:01

Всем доброе утро! :З

alt

Это примечание относится только к Query Builder, либо к Eloquent тоже?

Maxim
@Big-Shark
Jul 26 2015 08:01
элоквоент использует квери билдер
Илья.
@IlyaVorozhbit
Jul 26 2015 08:02
@Big-Shark понял, благодарю
Илья.
@IlyaVorozhbit
Jul 26 2015 08:15
Приемлемо ли в цикле заполнять атрибуты модели?
Maxim
@Big-Shark
Jul 26 2015 08:15
смотря для чего
Илья.
@IlyaVorozhbit
Jul 26 2015 08:15
Данные пользователя
Получая их с $_POST
YAAP
@yaapis
Jul 26 2015 08:19
@IlyaVorozhbit fill же есть, зачем форич еще?
Илья.
@IlyaVorozhbit
Jul 26 2015 08:19
не покурил доки) благодарю
YAAP
@yaapis
Jul 26 2015 08:19
ну, разве что у вас все поля в протекте ))
Илья.
@IlyaVorozhbit
Jul 26 2015 08:25
Не подскажете на 2.53 как он сделал (хоткей?) из div.alert.alert-success чуть нечто более нужное
https://laracasts.com/series/laravel-5-fundamentals/episodes/20
Paul Klementyev
@klermonte
Jul 26 2015 08:25
Таб
В пхпсторм эммит встроен
И неужели вам не стыдно открыто признаваться, что не читая документацию задаете вопросы тут?
YAAP
@yaapis
Jul 26 2015 08:27
@klermonte я как-то обсуждал этот вопрос
Иногда нет возможности перечитать всю доку, и тем более запомнить всю доку.
Илья.
@IlyaVorozhbit
Jul 26 2015 08:28
@klermonte я читаю ее, но что не могу найти, все равно спрашиваю
YAAP
@yaapis
Jul 26 2015 08:28
Да и в случае с fill - пока на практике не попробуешь - не поймешь чем он лучше или хуже (не конкретно этот метод, но часто бывает, в доке есть, а где использовать - хз)
Илья.
@IlyaVorozhbit
Jul 26 2015 08:33
А как быть с полем _token (csrf)?
unset(_token) некрасиво ведь)
Paul Klementyev
@klermonte
Jul 26 2015 08:36
Если его нет в филбл, он и не будет записываться
YAAP
@yaapis
Jul 26 2015 10:10
@IlyaVorozhbit Перефразируя ответ @klermonte - в филабл у вас должны быть только те свойства, которые вы хотите через метод филл проставлять (это есть в одном из ралакастов), так что можно смело пихать весь реквест (после валидации) в филл =)
Илья.
@IlyaVorozhbit
Jul 26 2015 10:15
@yaapis я понял, благодарю)
Paul Klementyev
@klermonte
Jul 26 2015 10:15
@yaapis спасибо) с телефона неудобно много писать
Илья
@iliyaZelenko
Jul 26 2015 12:44
Почему при установке админки sleepingowl вылезла ошибка class 'sleepingowl\admin\adminserviceprovider' not found?
seoperin
@seoperin
Jul 26 2015 12:52
Привет всем! Есть тут кто готов помочь мне с проектом? Работы на час-два максимум, просто уже мозг туго соображает... Если кому интересно, напишите что по ценам
Evgeniy
@Ruzarh
Jul 26 2015 13:11

Все привет. А кто то встречался с вот такой ошибкой

Relationship method must return an object of type Illuminate\Database\Eloquent\Relations\Relation

Что она означает я знаю. Но я хочу в шаблоне что бы мой метод возвращал объект который нужен мне, а не связь. Как это можно побороть ? (v5.1)

Maxim
@Big-Shark
Jul 26 2015 13:11
убрать скобочки?
Evgeniy
@Ruzarh
Jul 26 2015 13:22
@Big-Shark getOwnerAttribute() работает. а вот метод owner() должен возвращать только связь (( Какой отстой (((
Maxim
@Big-Shark
Jul 26 2015 13:51
@Ruzarh это что у тебя за метод атрибут такой, и что он делает?
YAAP
@yaapis
Jul 26 2015 13:59
@Ruzarh
Пример покажите, что в коде...
Evgeniy
@Ruzarh
Jul 26 2015 14:20
retun new App\Model\Trololo($this->id);
YAAP
@yaapis
Jul 26 2015 14:21
@Ruzarh Что, простите? =)
Полный метод, с описанием, названием и т.д.
Evgeniy
@Ruzarh
Jul 26 2015 14:21
не суть на самом деле что это, но в модели public function owner(){} должен возвращать связь.
YAAP
@yaapis
Jul 26 2015 14:22
ну, верно - у вас в ошибке так и написано
Evgeniy
@Ruzarh
Jul 26 2015 14:22
Relationship method must return an object of type Illuminate\Database\Eloquent\Relations\Relation
Paul Klementyev
@klermonte
Jul 26 2015 14:22
Так возвращайте релейшн)
YAAP
@yaapis
Jul 26 2015 14:22
ну, так возвращайте релейшен )
Evgeniy
@Ruzarh
Jul 26 2015 14:23
Если вы прочтете выше что я спрашивал, то не будет глупых вопросов
YAAP
@yaapis
Jul 26 2015 14:23
о как =)
Evgeniy
@Ruzarh
Jul 26 2015 14:23
Что она означает я знаю. Но я хочу в шаблоне что бы мой метод возвращал объект который нужен мне, а не связь. Как это можно побороть ? (v5.1)
Это я выше написал
Paul Klementyev
@klermonte
Jul 26 2015 14:23
Без скобок вернёт объект а не релейшн
Evgeniy
@Ruzarh
Jul 26 2015 14:24
@klermonte Тогда пардон, а что за скобки емеются в виду ?
В шаблонизаторе <?php ?> не помогает.
Или что за скобки тогда ?
JhaoDa
@jhaoda
Jul 26 2015 14:25
@Ruzarh ты вообще пробовал думать? owner() — связь, owner — объект из связи.
YAAP
@yaapis
Jul 26 2015 14:27
@jhaoda @klermonte
Он по другому хочет сделать
retun new App\Model\Trololo($this->id);
JhaoDa
@jhaoda
Jul 26 2015 14:27
Ну пусть хочет
Evgeniy
@Ruzarh
Jul 26 2015 14:27
$model->owner мне возвращала ошибку
JhaoDa
@jhaoda
Jul 26 2015 14:28
Правда, какое это имеет отношение к связи, когда это создание инстанса?
@Ruzarh и дальше-то что? Мы должны угадывать ошибку?
Телепатия антинаучна
YAAP
@yaapis
Jul 26 2015 14:28
@Ruzarh у вас есть метод owner() - возвращает связь
замутите кастомную функцию, воторая будет делать так:
this->owner()->where()->first()...
Evgeniy
@Ruzarh
Jul 26 2015 14:29
@jhaoda ты читал выше ? Я написал выше четко и ясно. Ты не груби, раз не читаешь развивай телепатию.
@yaapis да спасибо!
JhaoDa
@jhaoda
Jul 26 2015 14:29
Странный человек: доки не читал, он, а виноват я...
Maxim
@Big-Shark
Jul 26 2015 14:29
@Ruzarh напиши еще раз что у тебя за атрибут там, и как ты пытаешься получить модель в вью
Evgeniy
@Ruzarh
Jul 26 2015 14:29
На самом деле просто getOwnerAttribute() и он нормально верент модель. А вот если на прямую, то он хочет именно связь ((
JhaoDa
@jhaoda
Jul 26 2015 14:30
:) :) :)
YAAP
@yaapis
Jul 26 2015 14:30
@Ruzarh не за что, просто не надо агрится на людей за то, что сами не корректно ставите вопрос
то, что я его понял - просто означает, что я такой же повернутый, как и вы)
JhaoDa
@jhaoda
Jul 26 2015 14:30
@Ruzarh доки читай, странных вопросов будет меньше
Maxim
@Big-Shark
Jul 26 2015 14:31
А я вот так нифига и не понял, что вопрос не понял, что ответ не понял(
JhaoDa
@jhaoda
Jul 26 2015 14:31
@Big-Shark значит, ты нормальный :)
Maxim
@Big-Shark
Jul 26 2015 14:31
@jhaoda это радует)
YAAP
@yaapis
Jul 26 2015 14:32
зы: Пример из жизни, чтоб закрепить
public function media()
{
    return $this->morphMany('Carousel\Models\Media', 'mediable');
}

public function pictures()
{
    return $this->media()->of('image');
}
public function scopeOf($query, $type)
{
    return $query->where('type', $type);
}
JhaoDa
@jhaoda
Jul 26 2015 14:33
@yaapis пс, парень, если удалишь пустые строки внутри функций, вообще чотко станет
YAAP
@yaapis
Jul 26 2015 14:33
@jhaoda @Big-Shark
У человека есть метод owner(), есть getOwnerAttribute()
В шаблоне он пытается сделать ->owner-> - но связь не возвращается...
Evgeniy
@Ruzarh
Jul 26 2015 14:33
Спасибо! Признаю свою вину! Спасибо !
JhaoDa
@jhaoda
Jul 26 2015 14:33
@yaapis человек доки не читал
Evgeniy
@Ruzarh
Jul 26 2015 14:33
Но все же колкости это плохо!
Maxim
@Big-Shark
Jul 26 2015 14:33
@yaapis ясен перец, так я и хотел увидетьб что у него там в getOwnerAttribute скрыто
JhaoDa
@jhaoda
Jul 26 2015 14:33
@Ruzarh кому плохо?
Evgeniy
@Ruzarh
Jul 26 2015 14:34
@jhaoda Почему ты снова колкости кидаешь. Их я читал.
YAAP
@yaapis
Jul 26 2015 14:34
@jhaoda нет, не читал, ты был прав, я писал выше....
тут 90% не читали)
JhaoDa
@jhaoda
Jul 26 2015 14:34
@Ruzarh плохо читал, раз такие вопросы возникают
Evgeniy
@Ruzarh
Jul 26 2015 14:36
@jhaoda ладно, мне приператься неохота. Мне нужно было решение. За него спасибо! А то что ты себя считаешь выше, то зря.
JhaoDa
@jhaoda
Jul 26 2015 14:36
Да, я выше. Я читал доки.
Maxim
@Big-Shark
Jul 26 2015 14:37
почемуто есть подозрение что решение будет костылем(
YAAP
@yaapis
Jul 26 2015 14:37

@Ruzarh Вы не правы. Если вы посидите и почитаете вопросы людей - поймете, почему такие вопросы.

Ну и заставлять нас выдать вам решение....

Evgeniy
@Ruzarh
Jul 26 2015 14:39
Я задаю вопросы крайне редко. Раньше даже помогал в этом чате. Но потом вышел спор про идеологию. И про то что Тейлор просто обязан сделать LTS поддержку. Прошло пол года и он ее сделал.
Просто я связи избегал, решил попробовать, и снова стал избегать =(
Вместо 3 запросов, она мне сделала 39 =(
YAAP
@yaapis
Jul 26 2015 14:40
@Ruzarh
Вместо 3 запросов, она мне сделала 39 =(
Это еще раз говорит о том, что вы плохо читали доки, в частности N+1 problem
https://www.youtube.com/watch?v=swhWRMkpVsg
JhaoDa
@jhaoda
Jul 26 2015 14:41
https://toster.ru/q/235018 посмотрите, какие вопросы волнуют людей
  1. Где лучше биндить интерфейсы к реализации - в хелпере bingings или в сервис-провайдере?
  2. Где хранить сервис провайдеры? Пока хранятся в папке Providers
@yaapis здесь принято ссылки на видео заворачивать в код, что бы не рвали чат
YAAP
@yaapis
Jul 26 2015 14:43
@jhaoda у меня с этим поблемы =))
у меня не работает тильдовая кнопка )))
JhaoDa
@jhaoda
Jul 26 2015 14:43
@yaapis хм... держи — ````
@yaapis Ctrl+C, Ctrl+V работают, надеюсь?
YAAP
@yaapis
Jul 26 2015 14:45
угу, спс =))))
Maxim
@Big-Shark
Jul 26 2015 14:45
@Ruzarh если вы хотите получить ответ, пожалуйста предоставляйте код если вас его просят, иначе очень сложно понять что к чему.
Evgeniy
@Ruzarh
Jul 26 2015 14:49
В видео все круто, но в доке есть layzyLoad, Но да, спасибо. Пока правда связи не очень понравились. Но может позже больше понравятся.
YAAP
@yaapis
Jul 26 2015 14:50
@Ruzarh да всем одинаково
не хотите использовать молоток по полной - забивайте гвозди отверткой =)
Evgeniy
@Ruzarh
Jul 26 2015 14:50
@jhaoda у меня нет проблем с биндами =) И с сервис провайдерами тоже нет =)
@yaapis ну ок. Раз все так круто, расскажите мне про кеши. Каким спосбом можно стандарными спросбобами отслеживать изменение модели, и тереть ее кеш ?
Раньше этого было нельзя. Это к вопросу отвертки и гвоздей )
soinm
@soinm
Jul 26 2015 14:53
Всем привет! Есть кто онлайн?
Maxim
@Big-Shark
Jul 26 2015 14:53
Это всегда было можно
butschster
@butschster
Jul 26 2015 14:54
привет
YAAP
@yaapis
Jul 26 2015 14:54
@Ruzarh Я отвечу вам так: способ тереть кеши можно было и в 4ке стандартно...
а вот как - позволю вам найти самому )
butschster
@butschster
Jul 26 2015 14:54
канечно есьб
есть
soinm
@soinm
Jul 26 2015 14:55
Ребят извините за тупой вопрос..... я понятия не имею что такое laravel. Говорят что на ней делают профессиональные сайты. И что с нее начинать легче всего.
Знаю немного php и верстку. ООП не разбираюсь. Стоит изучать?
Evgeniy
@Ruzarh
Jul 26 2015 14:56
@yaapis т.е. a деляю $model->save() и он его тер ? без бинда событий ?
YAAP
@yaapis
Jul 26 2015 14:56
@soinm Для вас - основное правило - Ларавел - не ЦСМ, но фреймворк
Все надо будет делать самому
А в остальном - да, стоит начинать, если не хотите на говновизитках останавливаться
@Ruzarh я закончил наш с вами диалог, доказывать вам что-то просто ради того, чтоб доказать - не сегодня )
soinm
@soinm
Jul 26 2015 14:58
@yaapis на сколько все писать самому? прям с нуля? или все-таки большинство потребностей есть в виде готовых расширений?
Evgeniy
@Ruzarh
Jul 26 2015 14:59
@yaapis Согласен. Но все же такого способа нет =)
YAAP
@yaapis
Jul 26 2015 14:59
@soinm смотря какие потребности
Если вам надо ОРМ или работу с мылом или.. или - то все это есть
Если вам надо поставить что-то, скачать тему, зайти в админку и мышкой добавить 2 странички - этого нет )
soinm
@soinm
Jul 26 2015 15:00
@yaapis понятно) спасибо
YAAP
@yaapis
Jul 26 2015 15:00
@soinm Весь ралавел построен на работе композера - в него можно что угодно запихнуть, поэтому вопрос с инструментарием в основном сводится к "Что выбрать"
Oleg Melnik
@olegmelnik
Jul 26 2015 15:00
Ребят, а кто-нибудь может привести пример как передать csrf в post запрос?
YAAP
@yaapis
Jul 26 2015 15:00
@olezko46 чуть подробней
Oleg Melnik
@olegmelnik
Jul 26 2015 15:01
@yaapis Ну я пытаюсь написать свое rest api для личных целей. Нужен post запрос
@yaapis Просто как-то не круто вьюху создавать для этого дела
@yaapis В инете есть только как отключить csrf в конкретных запросах или полностью
YAAP
@yaapis
Jul 26 2015 15:03
https://github.com/laravel/framework/blob/5.0/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php#L55
JhaoDa
@jhaoda
Jul 26 2015 15:04
@olezko46 если ты делаешь API, то там не может быть csrf-токена
YAAP
@yaapis
Jul 26 2015 15:04

передавайте в запросе _token, если устроит такое решение

Но - вот... для АПИ - не лучшее решение

если надо протектить часть ресурсов - надо авторизацию делать
JhaoDa
@jhaoda
Jul 26 2015 15:05
Не просто не лучшее, а бессмысленное
@yaapis Токен это не защита
Oleg Melnik
@olegmelnik
Jul 26 2015 15:05
Мне не нужно защищать передачу. Запрос в фоне на клиенте будет проходить каждые 2 минуты.
YAAP
@yaapis
Jul 26 2015 15:06
@olezko46 https://github.com/dingo/api
Можно тут посмотреть - может и пакетик подойдет
JhaoDa
@jhaoda
Jul 26 2015 15:06
@olezko46 ещё раз — выключил в VerifyCsrfToken.php проверку токенов для своего API
Oleg Melnik
@olegmelnik
Jul 26 2015 15:07
Просто в будущем планируется веб версия. Не хочется проблемы с безопасностью
Спасибо за совет
JhaoDa
@jhaoda
Jul 26 2015 15:07
API и csrf-токен даже на логическом уровне не возможно связать
@olezko46 веб-версия к API может иметь отношение только внутри — один и тот же класс выполняет действия. Но обрабатываться эти запросы должны разными контроллерами, а вот они уже вызывают тот самый класс
Oleg Melnik
@olegmelnik
Jul 26 2015 15:09
@jhaoda спасибо, понял :)
Илья
@iliyaZelenko
Jul 26 2015 15:51
SleepingOwl нужно скачивать с хитхаба и куда-то закидывать?
JhaoDa
@jhaoda
Jul 26 2015 15:53
@iliyaZelenko про композер не слышал?
Илья
@iliyaZelenko
Jul 26 2015 16:11
Да я пробывал ошибку выдает
JhaoDa
@jhaoda
Jul 26 2015 16:11
@iliyaZelenko так надо пробОвать, а не пробЫвать
Илья
@iliyaZelenko
Jul 26 2015 16:13
) Ты работал с этим пакетом?
Мне выдает ошибку что провайдер не найден
Илья
@iliyaZelenko
Jul 26 2015 16:20
Я в коипозер написал, а оно наверное не загрузило. composer update делал
Vlad Shcherbin
@VladShcherbin
Jul 26 2015 16:27
@jhaoda помоги парню, чего ты
Илья
@iliyaZelenko
Jul 26 2015 16:30
Я разобрался
Написал в require-dev вместо require
JhaoDa
@jhaoda
Jul 26 2015 16:35
@VladShcherbin видишь? Очень часто достаточно просто не мешать человеку советами :)
Vlad Shcherbin
@VladShcherbin
Jul 26 2015 16:37
@jhaoda :D
Alexandr Chernyaev
@tabuna
Jul 26 2015 17:32
Ребят подскажите пожалуйста как вернуть false при использовании scope у модели?
Если ставлю return false; то получаю объект построителя запроса
Maxim
@Big-Shark
Jul 26 2015 17:33
чего?
Paul Klementyev
@klermonte
Jul 26 2015 17:40
Скоуп для того и предназначе, изменять текущий кверибилдер
Alexandr Chernyaev
@tabuna
Jul 26 2015 17:45
@klermonte так мне и необходимо сделать запрос и получить булевое значение
JhaoDa
@jhaoda
Jul 26 2015 17:46
@tabuna доки читать не пробовал?
Maxim
@Big-Shark
Jul 26 2015 17:46
не для этого скойп нужен
JhaoDa
@jhaoda
Jul 26 2015 17:46
@tabuna скоуп не может вернуть значение
emissar
@emissar
Jul 26 2015 17:49
$ php -r 'echo date("d.m.Y", strtotime("this Sunday"));'
26.07.2015

php -r 'echo date("d.m.Y", strtotime("this Monday"));'
27.07.2015
никто не знает, почему так?
JhaoDa
@jhaoda
Jul 26 2015 17:52
@emissar что именно?
emissar
@emissar
Jul 26 2015 17:55
@jhaoda "этот понедельник" показывает завтрашний день, при том, что "это воскресенье" -- сегодняшний
а вот баг походу https://bugs.php.net/bug.php?id=63740
Maxim
@Big-Shark
Jul 26 2015 17:57
может часовые пояса?
emissar
@emissar
Jul 26 2015 18:00
@Big-Shark ну я думал об этом, но тогда бы "текущее воскресенье" вернуло бы 2 августа
Maxim
@Big-Shark
Jul 26 2015 18:01
логично)
WmA
@akis94
Jul 26 2015 18:19
В Стамбуле прошла конференция php. Говорили много о чем. Но мне больше всего запомнился программист, который рассказывал про TDD тесты и почему они лучше Unit тестов и тот, который рассказывал про новую фичу, которая будет работать с composer
Вот решил поделиться
This message was deleted
Vlad Shcherbin
@VladShcherbin
Jul 26 2015 18:35
ребята, а почему дока в lumen-е такая кастрированная, о blade в шаблонах вообще ничего не написано. так и надо или я не нашёл?
Paul Klementyev
@klermonte
Jul 26 2015 18:43
@emissar, может это потому, что по дефолту неделя с воскресенья начинается?
YAAP
@yaapis
Jul 26 2015 19:09
@VladShcherbin потому, что сам люмен кастрированный =)
@VladShcherbin я 3 раза пытался на нем мини проекты делать - в итоге послал эту идею )))
Vlad Shcherbin
@VladShcherbin
Jul 26 2015 19:10
@yaapis чего не хватило?
YAAP
@yaapis
Jul 26 2015 19:11
@VladShcherbin терпения
инструменты, которые я привык использовать - надо дополнительно допиливать
Его есть смысл использовать только для хай-лоад мини проектов или для хай-лоад АПИ
Vlad Shcherbin
@VladShcherbin
Jul 26 2015 19:11
@yaapis а для почти статичных сайтов подойдёт?
YAAP
@yaapis
Jul 26 2015 19:12
@VladShcherbin да и вообще, судя по этому: http://joxi.ru/eAOq00zFWv8Mmo - больше на писькомерство похоже, чем на реальную необходимость кастировать основной проект
@VladShcherbin да он и для совсем не статичных подойдет. С люмена можно сделать полноценный ларавел (просто пакеты доставить и пару строчек в старте откоментить) - но для чего?
Если вам хватит того функционала, что дает люмен из коробки - его однозначно надо использовать, если позже станет мало - его однозначно можно расширить, но если изначально надо чуть больше, чем уже есть - лучше сразу ларавел юзать
Vlad Shcherbin
@VladShcherbin
Jul 26 2015 19:15
@yaapis спасибо. мне вроде хватает, да вот дока какая-то совсем печальная..
YAAP
@yaapis
Jul 26 2015 19:15
@VladShcherbin так а вы с ларавелской доки начинайте =)))
Vlad Shcherbin
@VladShcherbin
Jul 26 2015 19:16
@yaapis так же неинтересно ;)
YAAP
@yaapis
Jul 26 2015 19:21
@VladShcherbin Повторюсь, люмен стоит использовать только когда твердо знаете что делаете и зачем оно вам - если не уверены - лучше ларавел юзать - он не настолько тормозной, чтоб этого боятся, а головняка меньше в разы
Vlad Shcherbin
@VladShcherbin
Jul 26 2015 19:22
@yaapis спасибо, буду изучать
Evgeniy
@Ruzarh
Jul 26 2015 19:38

Добрый вечер. Сегодня разговор не вышел уже. Но я кое чему научился.

Суть вопроса, у меня есть базовый контроллер. в котором я в коде использовал beforeFilete и afterFilter. Код ниже

public function __construct()
    {
        $this->beforeFilter('@preDispatch');
        $this->afterFilter('@postDispatch');
    }
    public function preDispatch(Route $route, Request $request)
    {
        $this->request  = $request;
        new Blocks($this);
    }
    public function postDispatch(Route $route, Request $request, $response)
    {
        if ($response instanceof Response) {

            if (!$response->isRedirection()) {

                $this->prepareModules();
                $this->v('jsData', json_encode((object)$this->jsData));

                $isJson = ($request->ajax() || $this->json);

                if ($this->tpl) {
                    $isJson
                        ? $this->setHtml($this->view->make($this->tpl)->render())
                        : $response->setContent($this->view->make($this->tpl));
                }

                if ($isJson && ($response->isEmpty() || !$response->getContent())) {
                    $response->setContent($this->ajaxData);
                }
            }
        }
    }

Так вот, они нынче стали деприкейтед. С beforeFilter я разобрался. А вот куда мне вынести afterFilter.

В доке есть Response Macros. Но я не могу найти возможности испльзовать его в контексте контроллера. Грубо говоря я не хочу в каждом методе контроллера возвращать response()

Кто мне сможет дельное что подсказать?

JhaoDa
@jhaoda
Jul 26 2015 19:51
@Ruzarh фильтры теперь это мидлвари, что before, что after.
Evgeniy
@Ruzarh
Jul 26 2015 19:54
@jhaoda Спасибо! А вот как и где мне можно возвращаемый response ?
Найти в документации я не могу, либо не там ищу ((
JhaoDa
@jhaoda
Jul 26 2015 19:54
@Ruzarh «как и где мне можно возвращаемый response» — можно что?
Evgeniy
@Ruzarh
Jul 26 2015 20:00
Каждый запрос создает облегченно такую цепочку router->controller->action
action возращает response. Если его нет, то создается объект response, собвстенно перед отправкой его можно было модернизировать в afterFilter. А где его сейчас можно перехватить ?
JhaoDa
@jhaoda
Jul 26 2015 20:00
@Ruzarh я же сказал — в мидлваре.
Evgeniy
@Ruzarh
Jul 26 2015 20:01
А каким способом, есть пример ?
JhaoDa
@jhaoda
Jul 26 2015 20:01
@Ruzarh ты что думаешь, я из вредности настойчиво рекомендую читать доки?
http://laravel.com/docs/5.1/middleware#defining-middleware, раздел «Before / After Middleware»
Evgeniy
@Ruzarh
Jul 26 2015 20:03
Я туп. Пардон. Исклал, и terminate подумал что он консольный респонс.
Спасибо!
Evgeniy
@Ruzarh
Jul 26 2015 20:20
И еще тогда вопросик, как можно передать нормальными способами в response модель контроллера, который использовалался. Моя привычная структура пошла псу под хвост. =(
Paul Klementyev
@klermonte
Jul 26 2015 20:22
У view есть метод with()
Evgeniy
@Ruzarh
Jul 26 2015 20:28

Так примерно выгдядит мой контроллер (в котором только фронтенд +/-)

<?php namespace App\Http\Controllers;

class TestController extends Controller
{
    protected $layout = 'admin';

    public function index()
    {
        $this
            ->setTitle('Main')
            ->setTpl("dashboard.main");
    }
**
     *
     */
    public function postData()
    {
        $this->addData([
            'values' => [
                ['date' => '2014-02', '0' => rand(1000, 10000), '1' => rand(1000, 10000), '2' => rand(1000, 10000)],
                          ],
            'fields' => ['0', '1', '2'],
            'labels' => ['films', 'superfilms', 'novafilms'],
        ]);
    }

}

И собственно все у меня собиралось у меня после. Т.е. Он смотрел что нет респонса кастомного, он брал базовый, смотрел, если это аякс, то подготавливал его как json, если установлен темплейт, то он его рендерил, и подсовывал в аякс в нужное поле.

Примерно вот так. У меня достаточно тонкие контроллеры. Я конечно могу все передавать в view()->share() но это не архитектурное решение
Paul Klementyev
@klermonte
Jul 26 2015 20:30
Бррррр
Evgeniy
@Ruzarh
Jul 26 2015 20:33
index() это ответ шаблоном postData() -> это json [причем если добавть $this->setTitle('Main')->setTpl('admin.analytics.main');] то будет {data:[…], html:»…"}
Paul Klementyev
@klermonte
Jul 26 2015 20:33
Проблема в том, что ты вынес часть функционала из контроллера в фильтры, что не есть гуд.
Фильтры, а теперь мидлверы, не должны создавать респонз, они могут его модифицировать, в этом их пр дназначение. И теперь из-за нарушения mvc тебе приходиться ломать голову
Evgeniy
@Ruzarh
Jul 26 2015 20:35
Ну я сделал удобную архитектуру, которая уменьшила количество кода в три раза. А теперь фильтры деприкейтед. Я уже не рад что начал перехоить на 5.1
А в чем нарушение mvc в данном случае ?
Paul Klementyev
@klermonte
Jul 26 2015 20:35
Обработка запроса не в контроллере
Evgeniy
@Ruzarh
Jul 26 2015 20:36
В zend1 был postDispatch, в котором я модернизировал ответ.
Paul Klementyev
@klermonte
Jul 26 2015 20:36
Экшн должен возвращать респонз, у тебя нет
Evgeniy
@Ruzarh
Jul 26 2015 20:37
А кто сказал что он должен возвращать response ?
WmA
@akis94
Jul 26 2015 20:37
помимо Middleware, там ещё есть Request. Думаю, что это решается как раз с помощью этого.
Paul Klementyev
@klermonte
Jul 26 2015 20:37
Кдючевое слово модифицировал, а тут у тебя нечего модифицировать, экшн ничего не вернул
Evgeniy
@Ruzarh
Jul 26 2015 20:39
@akis94 спасибо, буду жить с этим хаком )
\Request::instance->controller = $this;
WmA
@akis94
Jul 26 2015 20:39
Кстати для модификации шаблонов создавал отдельную модель Template. И дополнительно template_subtemplate
Evgeniy
@Ruzarh
Jul 26 2015 20:40
@klermonte да, от части это так, но зачем каждый раз писать одни и теже строчки кода, которые можно и не писать. И проект переписывать намного дороже, чем за вечеро добавить костыль.
WmA
@akis94
Jul 26 2015 20:40
А дальше реализовал структуру, схожую со структурой категорий
Это баг или прикол, у меня тут написано var gitter = require('backend');)
Denis Isaychenko
@Rhincodon
Jul 26 2015 20:45
ну это они типа на работу бэкендшика ищут )
Evgeniy
@Ruzarh
Jul 26 2015 20:45
Спасибо всем огромное за терпение. Костыли заработали, и все засияло =)
Paul Klementyev
@klermonte
Jul 26 2015 20:46
Ruzarh
Где ты про писал присвоение контроллера?
WmA
@akis94
Jul 26 2015 20:47
ахах, что-то не пришло в голову что так будут искать)
У ангулярщиков кажется чат начал расти)
Evgeniy
@Ruzarh
Jul 26 2015 20:54
@klermonte в конструкторе контроллера \Request::instance->controller = $this;
Paul Klementyev
@klermonte
Jul 26 2015 20:55
Передай реквест хотя бы из di для приличия)
__construct(Request $request)
Evgeniy
@Ruzarh
Jul 26 2015 20:56
Controller.php
    public function __construct()
    {
        $this->view = view();
        $this->request = \Request::instance();
        $this->request->controller = $this;
    }
Midleware.php
    public function handle($request, Closure $next)
    {
          $response = $next($request);

        /** @var Controller $controller */
        $controller = $request->controller;

        if ($response instanceof Response) {

            if (!$response->isRedirection()) {

                if ($controller instanceof Controller) {
                    $controller->postDispatch($request, $response);
                }
            }
        }

        return $response;
    }
__construct(Request $request) у этого есть один минус, если я насделуюсь, то в наследнике в конструкторе мне придется тянуть его с собой
__construct(Request $request, Foo $foo, Bar $bar){
   parent::__controller(Request $request); 
}
Paul Klementyev
@klermonte
Jul 26 2015 21:02
Ну тогда хотя бы app('request')
Хотя те же яйца, только в профиль)
Evgeniy
@Ruzarh
Jul 26 2015 21:04
Если буду убирать алиасы, то очень даже поможет =)
Спасибо еще раз всем за содействие.
Info-tm
@Info-tm
Jul 26 2015 21:37
Всем привет, помогите новичку)) Функция возвращает двубуквенные код языка en, ru, fr ... Но при запросе HTTP_ACCEPT_LANGUAGE есть вероятность получить в ответ es-co или en-us надо чтоб после запроса return substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); убералось все кроме первых двух букв и если на соответсвует двуюуквенным кодам en, ru, fr.. возвращал en вот код, заранее спасибо
public function getLang(){
    if(Input::has('lang'))
        return Input::get('lang');
    if(Cookie::has('lang'))
        return Cookie::get('lang');
    if(isset($_SERVER) && isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
        return substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
    return 'en';
}
JhaoDa
@jhaoda
Jul 26 2015 21:38
@Info-tm чем помочь-то?
Info-tm
@Info-tm
Jul 26 2015 21:38
дописать функция на проверку соответсвия заданным даух буквенным значения
JhaoDa
@jhaoda
Jul 26 2015 21:39
@Info-tm каким?
Info-tm
@Info-tm
Jul 26 2015 21:39
en, ru, fr, ar, kz
JhaoDa
@jhaoda
Jul 26 2015 21:39
@Info-tm что мешает тебе сделать это самому?
Info-tm
@Info-tm
Jul 26 2015 21:39
тупость
JhaoDa
@jhaoda
Jul 26 2015 21:40
@Info-tm т.е. ты не знаешь про функцию in_array()?
Info-tm
@Info-tm
Jul 26 2015 21:40
или мало опыта как правильно?
JhaoDa
@jhaoda
Jul 26 2015 21:40
Может быть надо начать с документации по РНР?
Info-tm
@Info-tm
Jul 26 2015 21:40
ок спасибо понял
Oleg Melnik
@olegmelnik
Jul 26 2015 21:41
Мужики, а есть какие-нибудь сайты, где можно скачать туториалы laracast бесплатно?
Oleg Melnik
@olegmelnik
Jul 26 2015 21:44
@Info-tm огонь, спасибо!
Info-tm
@Info-tm
Jul 26 2015 21:44
на здоровье
Soprun Vladislav
@vlsoprun
Jul 26 2015 22:33
This message was deleted
This message was deleted