These are chat archives for LaravelRUS/chat

2nd
Dec 2016
devweb99
@devweb99
Dec 02 2016 02:49
Scope перестали работать. Подскажите пожалуйста почему
namespace App;
use App\parthner;
use Kalnoy\Nestedset\Node;

use App\Http\Requests;
use Illuminate\Http\Request;

use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Model implements AuthenticatableContract, CanResetPasswordContract {

  use Authenticatable, CanResetPassword;
Rahim
@happyhaha
Dec 02 2016 03:59
Всем привет! :)
KarmaBot
@KarmaBot
Dec 02 2016 03:59
@happyhaha, привет, как настроение?
Rahim
@happyhaha
Dec 02 2016 03:59
@KarmaBot Хорошо спасибо)
KarmaBot
@KarmaBot
Dec 02 2016 03:59
@happyhaha, не за что, я всегда к твоим услугам =)
Спасибо (+1) для @KarmaBot принято! Текущая карма +362.
Rahim
@happyhaha
Dec 02 2016 04:03
@devweb99 блин сорри, я сам новичек, кроме как почитать документацию не могу ничего дельного предложить :D
devweb99
@devweb99
Dec 02 2016 04:04
@happyhaha печаль
Rahim
@happyhaha
Dec 02 2016 04:04
@devweb99 в стаковерфлоу что-нибудь нашел?
Dave
@aios
Dec 02 2016 04:04
@devweb99 если будешь спамить одно и тоже тебя забанят нахрен
devweb99
@devweb99
Dec 02 2016 04:05
@aios согласен. Но мне не кто не отвечает ((
Dave
@aios
Dec 02 2016 04:06
@devweb99 а тебе никто и не ответит
@devweb99 потому что никто не должен
Rahim
@happyhaha
Dec 02 2016 04:06
@devweb99 если ты используешь Надстройки, Допиливание, Доработки, то попробуй их убрать и посмотреть как скоупы будут работать Стандартно, если работает то значит в твоем коде что-то не то...
P.S. Хотя бы понять откуда веет ветер..)
Dave
@aios
Dec 02 2016 04:09
@devweb99 во первых "не работает" это не определение
@devweb99 во вторых никаких данных от тебя нет - какой то сраный кусок кода который влиять на скоупы ну никак не может
@devweb99 в третих на твоей кофейной гуще никто гадать не будет.
@devweb99 ну и в четвертых - сообщество дало тебе фреймворк и документацию - остальное ты вырастешь и дашь себе сам.
Sergey
@UnQuaiz
Dec 02 2016 04:42
всем привет
KarmaBot
@KarmaBot
Dec 02 2016 04:42
@UnQuaiz даров!
Sergey
@UnQuaiz
Dec 02 2016 04:44
вопрос на засыпку - если в маршрутах использую Closure, и хочу при этом кэширование маршрутов - кроме написания своего кэширования машрутов нет другого способа ?
Sergey
@UnQuaiz
Dec 02 2016 05:13
вариант вынести код в контроллер это конечно же очевидное решение
Rahim
@happyhaha
Dec 02 2016 05:31
@UnQuaiz Привет! :)
Sergey
@UnQuaiz
Dec 02 2016 05:31
@happyhaha привет
Dave
@aios
Dec 02 2016 05:47
@UnQuaiz ахах
прочитал ".... если в маршрутках..." чуть не помер...
Sergey
@UnQuaiz
Dec 02 2016 05:53
@aios :D
Dave
@aios
Dec 02 2016 05:56
@UnQuaiz а зачем вообще кеширование роутов?
@UnQuaiz ну ты можешь закешировать данные которые он возвращает
Sergey
@UnQuaiz
Dec 02 2016 05:56
@aios да, а вот данные которые примешиваются к роуту - не могу
Dave
@aios
Dec 02 2016 05:56
всмысле примешиваются?
Sergey
@UnQuaiz
Dec 02 2016 05:57
для целей сео каждый маршрут у меня имеет свои правила для генерации seo инфы, эти правила хранятся в бд
мне в принципе это больше на этапе отладки надо
ясен пень что проще закэшировать то что генерится во вьюхе и потом выплевывать
ваще крыша со всей этой сео байдой едет уже. никогда не сталкивался, а тут все на сео завязано
Mikita Melnikau
@PinkyRabbit
Dec 02 2016 06:02
@UnQuaiz так а почему вьюхой занимается не фронт-эндер? ему-то виднее что и куда как бы
Dave
@aios
Dec 02 2016 06:03
@UnQuaiz унаследуй контроллер
и пропускай каждый вызов
Sergey
@UnQuaiz
Dec 02 2016 06:04
@PinkyRabbit пока дизайнерят фронт я разрабатываю бэкинд
Nikita
@RedDevilHat
Dec 02 2016 06:04
всем привет
KarmaBot
@KarmaBot
Dec 02 2016 06:04
Приветствую тебя, @RedDevilHat!
Sergey
@UnQuaiz
Dec 02 2016 06:04
точнее архитектуру бэка
Nikita
@RedDevilHat
Dec 02 2016 06:04
ребят, вопрос
Dave
@aios
Dec 02 2016 06:04
@RedDevilHat все прям тебя одного ждали)
@RedDevilHat жги)
Nikita
@RedDevilHat
Dec 02 2016 06:04
кто нить с гузлом четвертым работал?)
Mikita Melnikau
@PinkyRabbit
Dec 02 2016 06:05
@UnQuaiz ну так разве когда-то просят чтобы в урле концовка была отличной от тайтла? такое раз в 500 лет бывает
Dave
@aios
Dec 02 2016 06:05
@PinkyRabbit я наверно сейчас глупость скажу - но если урлы были бы как тайтлы - то наверно это было бы жестко.
Sergey
@UnQuaiz
Dec 02 2016 06:06
@PinkyRabbit тут как раз такой случай)))
Mikita Melnikau
@PinkyRabbit
Dec 02 2016 06:06
@aios а как иначе? не на скрипт же указывать путь
Dave
@aios
Dec 02 2016 06:07
@PinkyRabbit как иначе - 100% не похожий на тайтл урл
как минимум сокращенный - как минимум в транслите
Mikita Melnikau
@PinkyRabbit
Dec 02 2016 06:07
@aios это разве трудно реализовать?
Sergey
@UnQuaiz
Dec 02 2016 06:08
@PinkyRabbit вопрос не про реализацию урлов
Dave
@aios
Dec 02 2016 06:08
@PinkyRabbit нет - но мы просто не о том)
Mikita Melnikau
@PinkyRabbit
Dec 02 2016 06:08
а ну извините =)))
Sergey
@UnQuaiz
Dec 02 2016 06:18

суть в том что у меня разные контроллеры, разные маршруты, и заканчивается только одним одинаковым - конкретной сущностью. добраться до это сущности можно тремя путями -

 /урл1/подурл1/подурл2/сущность1
/урл2/подурл2/подурл3/подурл4/сущность1
/урл3/подурл4/сущность1

суть этих путей простая - к конретной сущности 1 можно добраться тремя путями через разные связанные объекты.
некоторые из подурл являются "фильтрами", некоторые - объектами которым принадлежит сущность.
причем для каждого урл, подурл, сущность и комбинации урл/подурл - свои правила для генерации ключевых слов, описаний и прочей фигни.
и они наследуются. так вот начинают они наследоваться от "маршрута". всё это завязано на семантике поисковых запросов

Mikita Melnikau
@PinkyRabbit
Dec 02 2016 06:19
Ну по логике если рассудить - нужно смотреть роуты и для каждого путя свой роут.
Sergey
@UnQuaiz
Dec 02 2016 06:20
это уже есть и работает
Mikita Melnikau
@PinkyRabbit
Dec 02 2016 06:20
а что не работает? ты хочешь чтобы контроллеры друг друга наследовали?
Sergey
@UnQuaiz
Dec 02 2016 06:21
мне нужен объект родительский который привязан к конкретному маршруту а не к сущности, который находится в бд, и чтобы он генерировался один раз на этапе кэширования роутов.
подчеркну "на этапе кеширования роутов"
а не представлений
если сделать их кешируемыми в представлениях, то тогда после каждого изменения этих правил - будет тухнуть кеш представлений. мне же надо их гибко кешировать, отдельно от представлений. чтобы затем я мог разрулить как будет обновляться кеш самих представлений. чтобы это не было лавинообразно.
может я конечно не туда полез немного, но пока время на эксперименты есть
Mikita Melnikau
@PinkyRabbit
Dec 02 2016 06:26
ну и роуты тоже могут друг друга наследовать. я просто ещё не дока ларавел только открыл, но думаю он не исключение от других фреймворков. у тебя-то функция на создание объекта всё равно одна. а дальше как ты будешь его вызывать - это уже дело личное. основное правило программирования гласит - чем проще = тем лучше работает. а мне сейчас кажется что ты пробуешь усложнить какую-то очевидную вещь
Sergey
@UnQuaiz
Dec 02 2016 06:28
@PinkyRabbit ну скажем мягко говоря ты не прав. например: проще через Eloquent работать с моделями данных, т.к. удобно. но лучше работать будет через Doctrine или другой орм с меньшим оверхедом.
когда тебе не критичны ресурсы и время отклика может колебаться от 1 до 5 секунд - можно проще делать конечно. но мне нужен быстрый, отказоустойчивый сервис
Sergey
@UnQuaiz
Dec 02 2016 06:33
Route у меня уже давно свой, как и Router. проблема не в наследовании роутов или контроллеров. или моделей даже с которыми view работает. проблема в том как сделать лучше чтобы у текущего маршрута был синглтон SEO объекта, с правилами, из бд. и так чтобы это при каждом посещении маршрута не происходило.
Dave
@aios
Dec 02 2016 06:41
@UnQuaiz дайка разобраться у тебя есть некая логика
которая крепится к роуту
Sergey
@UnQuaiz
Dec 02 2016 06:42
сейчас размышления меня привели к тому что наверное надо плясать от кэша. если кэш будет правильно хранится - то могу и в контроллере этим всем оперировать
Dave
@aios
Dec 02 2016 06:42
@UnQuaiz эта логика по сути одинаковая - но имеет 3 скинутых тобой ответвления.
верно?
Sergey
@UnQuaiz
Dec 02 2016 06:43
@aios по сути да
Dave
@aios
Dec 02 2016 06:43
хм.. сделай сервиспровайдер
и организуй кеширование этой логики
сейчас покажу куда рыть
Sergey
@UnQuaiz
Dec 02 2016 06:45
@aios я сделал сервис провайдер RoutingServiceProvider он заменяет UrlGenerator - туда начал рыть
Dave
@aios
Dec 02 2016 06:46
@UnQuaiz Contextual Binding
Sergey
@UnQuaiz
Dec 02 2016 06:47
@aios думал над этим, но может недостаточно)
Dave
@aios
Dec 02 2016 06:48
Генератор урлы тоже хорошо - но мне кажется решение то что предложил я - логичнее
то бишь ты бизнес логику суешь на поверхность
а изменять по сути ее нужно внутри.
Sergey
@UnQuaiz
Dec 02 2016 06:50
хм..
попробую. спасибо @aios
KarmaBot
@KarmaBot
Dec 02 2016 06:51
Спасибо (+1) для @aios принято! Текущая карма +281.
Sergey
@UnQuaiz
Dec 02 2016 06:52
хотелось бы ещё протащить вот такую конструкцию Route::get('someroute',function(){})->name('magic.route')->canonical('canonical.route')
это я решил расширив класс Route, но вот там как раз и уперся в этот синглтон
canonical('canonical.route') говорит о том что с теми же параметрами если сгенерить ссылку по canonical.route - получим каноничную ссылку. которая будет указывать на эту же сущность в другой, каноничной, ветке
Sergey
@UnQuaiz
Dec 02 2016 06:57
попробую связывание сделать по контексту, может что выйдет из этого
Dave
@aios
Dec 02 2016 07:04
@UnQuaiz я не особо понимаю что такое вообще каноничная ссылка - потому не посоветую ничего)
Роман Сохарев
@greabock
Dec 02 2016 07:06

/урл1/подурл1/подурл2/сущность1
/урл2/подурл2/подурл3/подурл4/сущность1
/урл3/подурл4/сущность1

имхо, ты упоролся. У тебя не должно быть больше двух уровней вложенности сущностей. Это какая-то какашка.

/users - все пользователи
/users/1 - конкретный пользователь
users/1/friends друзья конкретного пользователя.
users/1/friends/2 - нет такого урла - ибо ересь. Правильный урл /users/2

И это к чему угодно применимо
Sergey
@UnQuaiz
Dec 02 2016 07:06
@greabock если ты говоришь в контесте стандартных деревьев и каталогов - то да, ты прав
@greabock мы упарываемся по правильному seo. приведу примеры щас
например мы имеем бд велосипедов. у нас есть производители Norco, SovietUnion, и т.д. у каждого из них есть страна производитель, есть характеристики которые их объединяют (двух колесные велосипеды, трёхколесные)
Dave
@aios
Dec 02 2016 07:10
@UnQuaiz так так уже интересно
Sergey
@UnQuaiz
Dec 02 2016 07:10
есть определенные группировки этих параметров, как "двух колесные велосипеды". есть часто используемые поисковые запросы
всё то что я разрабатываю опирается на полугодовое исследование ниши, т.е. выбраны кластеры, запросы, слова и т.п.
теперь конкретика:
если человек ищет в браузере "российские велосипеды с двумя колесами", то правильным для него и релевантным урлом будет "/rossiiskie-velosipedy/dvuhkolesnye/"
и когда перейдя по ссылке он найдет конкретный велосипед, ссылка будет такой /rossiiskie-velosipedy/dvuhkolesnye/id123 -- id я написал для ясности, но его может и не быть
Роман Сохарев
@greabock
Dec 02 2016 07:13
Это классно, это страница выборки - это норм
только вот каноник тут при чем?
Sergey
@UnQuaiz
Dec 02 2016 07:14
ща дойду
но тот же велосипед он может найти по запросу "велосипеды для детей"
Роман Сохарев
@greabock
Dec 02 2016 07:15
Это короче гон
Sergey
@UnQuaiz
Dec 02 2016 07:15
и урл будет /velosipedy/detskie/id123
так вот для второй ссылки canonical будет - первая ссылка
а путей таких проработано - три
это только сеошнику моему голову не взрывает, моя уже заштопана на несколько раз
причем поисковик должен индексировать это всё хозяйство, с правильными ключевыми по каждому роуту, каждому товару. и там не должно быть дубликатов ссылок.
@greabock велосипеды - это пример. у меня другие сущности
Sergey
@UnQuaiz
Dec 02 2016 07:23
@greabock понятное дело что правильный урл который не для выдачи будет что то в духе /country/category/group/id и он постоянен. и юзеру пофиг на это. а вот поисковым паукам не пофиг
для меня это всё новое. я не понимаю до конца алгоритмы выдачи поисковых движков, да мне и не надо - но я вникаю постепенно. мне дали тз, в котором черным по белому написаны правила формирования url, мета данные - какие /где и по какой логике должны быть
Sergey
@UnQuaiz
Dec 02 2016 07:29
я люблю нестандартные задачи :-D
Юрий
@sawerus
Dec 02 2016 07:32

@UnQuaiz )) если уж совсем быть точным то вместо этого

если человек ищет в браузере "российские велосипеды с двумя колесами", то правильным для него и релевантным урлом будет "/rossiiskie-velosipedy/dvuhkolesnye/id123"

надо
/rossiiskie-velosipedy/dvuhkolesnye/model_lisapeda а если их много то + инкремент
что бы и велосипед по поиску рулил...

Роман Сохарев
@greabock
Dec 02 2016 07:33
вы оба больные, короч
=))
Юрий
@sawerus
Dec 02 2016 07:33
да не... )) я забил на это давно
Nikita
@RedDevilHat
Dec 02 2016 07:33
Крч
Sergey
@UnQuaiz
Dec 02 2016 07:33
@sawerus я примерно ссылки показал, потому что все равно в чате суть не расскажешь
Nikita
@RedDevilHat
Dec 02 2016 07:33
чтоб совсем упоротся
сделай такие ссылки через .htaccess
Sergey
@UnQuaiz
Dec 02 2016 07:34
@sawerus но ты прав, там ещё дохера такого )
@RedDevilHat спасибо. .htaccess я в 2005 наупарывался по самые помидоры
KarmaBot
@KarmaBot
Dec 02 2016 07:34
Спасибо (+1) для @RedDevilHat принято! Текущая карма +2.
projct1
@projct1
Dec 02 2016 07:34
кстати почему мидлвер VerifyCsrfToken может не срабатывать?
посылаю пост запросы без передачи токена и всё норм отрабатывает
вот web.php
Route::group(['middleware' => 'auth'], function() {
    foreach (\App\OrderStage::all() as $stage) {
        Route::get($stage->slug, 'OrderController@' . ($stage->slug ?: 'index'))->name($stage->slug ?: 'index');
    }

    Route::post('order/{order}/update', 'OrderController@updateField')->name('order.update');
    Route::post('order/{order}/assignAdmin', 'OrderController@assignAdmin')->name('order.assignAdmin');
});
в Kernel.php в переменной $middlewareGroups стоит в ключе web стоит \App\Http\Middleware\VerifyCsrfToken::class
Sergey
@UnQuaiz
Dec 02 2016 07:41
@rorc а ты пробовал отладку ? verifyToken точно не срабатывает?
projct1
@projct1
Dec 02 2016 07:45
аааа он из сессии берётся
странно
Sergey
@UnQuaiz
Dec 02 2016 07:47
@rorc он у тебя в запросе летает а не из сессии берется. толку нет в CSRF если он берется из сессии
в сессии хранится только значение с которым сранивается
ну и главный вопрос, у тебя на GET запросе Verify не срабатывает ? @rorc
на всякий случай, уточнить :)
projct1
@projct1
Dec 02 2016 07:49
@UnQuaiz у меня метод tokensMatch возвращяет true...

@UnQuaiz

посылаю пост запросы

@UnQuaiz короче говоря эта строчка как и должно возвращяет null
$token = $request->input('_token') ?: $request->header('X-CSRF-TOKEN');
так как я его не передаю
но тем не менее всё норм валидируется, чё за баг не пойму
Sergey
@UnQuaiz
Dec 02 2016 07:52
@rorc аякс ?
projct1
@projct1
Dec 02 2016 07:52
@UnQuaiz да, через axios
@UnQuaiz мб потому что я авторизован прокатывает?
Soprun Vladislav
@vlsoprun
Dec 02 2016 07:54
Здорова мужики!
fakefakefake12
@fakefakefake12
Dec 02 2016 07:54
@rorc может он у тебя "зашит" в аксиосе?
Sergey
@UnQuaiz
Dec 02 2016 07:54
@fakefakefake12 во во
@rorc ты дампил всё что приходит тебе с запросом ?
projct1
@projct1
Dec 02 2016 07:54

@fakefakefake12 да не, я же написал)

@UnQuaiz короче говоря эта строчка как и должно возвращяет null
$token = $request->input('_token') ?: $request->header('X-CSRF-TOKEN');

@UnQuaiz через дебаг бар?
не пользуюсь им)
Sergey
@UnQuaiz
Dec 02 2016 07:57
@rorc ну сделай дамп в файл или ты файлами тоже не пользуешься ?
или куда ты там дамп делаешь
Stanislav Yankovskiy
@stasyanko
Dec 02 2016 08:08
Здарова. Ребята, кто подскажет, как реализовать OAuth2 в API на Laravel для Android? Пробовал Socialite, ничего не выходит.
KarmaBot
@KarmaBot
Dec 02 2016 08:08
Hello, @stasyanko!
Alexandr Chernyaev
@tabuna
Dec 02 2016 08:23
Привет всем !
KarmaBot
@KarmaBot
Dec 02 2016 08:23
Приветствую тебя, @tabuna!
devweb99
@devweb99
Dec 02 2016 09:07
для чего нужны фасады ?
vava
@vaz9
Dec 02 2016 09:07
@SerafimArts спасибо, обязательно посмотрю
KarmaBot
@KarmaBot
Dec 02 2016 09:07
Спасибо (+1) для @SerafimArts принято! Текущая карма +643.
vava
@vaz9
Dec 02 2016 09:08
@UnQuaiz а есть хорошее решение?
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 09:12
@devweb99 для 'удобного'(быстрого в плане числа кода и телодвижений) доступа к сервисам в IoC.
VitaliiSestrenskyi
@VitaliiSestrenskyi
Dec 02 2016 09:14
привет парни
KarmaBot
@KarmaBot
Dec 02 2016 09:14
Будь как дома, @VitaliiSestrenskiy, я ни в чем не откажу. Много мануалов, коль желаешь, покажу :)
devweb99
@devweb99
Dec 02 2016 09:16
@Ellrion вообщем для быстрого доступа к функции. Допустим есть одна большая монолитная функция. Разбераю его на фасады. Верном ключе я расуждаю ?
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 09:16
@devweb99 нет
Alexander
@Dualse
Dec 02 2016 09:17
@devweb99 Уже звучит страшно)
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 09:17
@devweb99 для начала давай определимся, мы говорим о Фасаде как о паттерне или тех фасадах которые в ларе и которые еще альясами там называются?
VitaliiSestrenskyi
@VitaliiSestrenskyi
Dec 02 2016 09:19
Подскажите , может кто уже делал . Есть вордовский документ, я прописал в нем переменную и через php подменяю на нужные мне данные. С текстами все норм, а вот как в вордовский документ вставить картинку не понимаю. Гуглил - есть разные библиотеки , но мне иммено в нужном месте вставить картинку , а не создавать файл.
devweb99
@devweb99
Dec 02 2016 09:20
@Ellrion второе
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 09:22
@devweb99 тогда тебе нужно для начала понимание сервис контейнера Illuminate\Contracts\Container. так же потребуется понимание автозагрузки, паттерна синглтон, статических методов. Что из этого ты НЕ знаешь?
devweb99
@devweb99
Dec 02 2016 09:23
@Ellrion все
@Ellrion проще напиши для чего нужен фасад и что в ларавеле разберает монолитные блоки ?
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 09:24

@devweb99 проще я тебе уже написал

для быстрого доступа к сервисам

devweb99
@devweb99
Dec 02 2016 09:24
@Ellrion к каким сервисам ? не понимаю
@Ellrion напиши пожалуйста пример
@Ellrion например отправить данные или создать быстро форму или какую нибудь таблицу. Верно ? в таком ключе ?
fakefakefake12
@fakefakefake12
Dec 02 2016 09:27
Можно почитать и понять самому, чем напрягать других объяснять тебе. Где манеры господа :D
devweb99
@devweb99
Dec 02 2016 09:27
@fakefakefake12 я их не заставляю. Если ответя буду признателен если нет то печаль
@Ellrion посмотрел стандартные фасады в ларавеле. Понял для чего он. Спасибо
KarmaBot
@KarmaBot
Dec 02 2016 09:31
Спасибо (+1) для @Ellrion принято! Текущая карма +153.
devweb99
@devweb99
Dec 02 2016 09:32
теперь подскажите пожалуйста что в ларавеле разбирает монолитный блок на компоненты ?
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 10:00
@devweb99 тебе никто не отвечает, потому что твой вопрос слишком общий. Декомпозиция кода проводится абсолютно по разному в зависимости от того что это за код
devweb99
@devweb99
Dec 02 2016 10:02
@Ellrion в большинстве случиях ?
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 10:03
@devweb99 в большинстве случаев по классам и методам классов)
devweb99
@devweb99
Dec 02 2016 10:04
@Ellrion с интерфейсами ?
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 10:04
@devweb99 не обязательно
devweb99
@devweb99
Dec 02 2016 10:05
@Ellrion а правильно делать функцию одну большую в классе + методы. А общие функции в глобальный контроллер писать ?
который наследуется контроллер
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 10:09
@devweb99 ты спрашиваешь правильно ли поджигать газ. Ну да если этот газ например из газовой плиты, и точно не очень если ты откроешь газовый баллон и поднесешь спичку. Понимаешь к чему я?
@devweb99 а вот например "делать большую функцию" вообщем не правильно
@devweb99 а использовать наследование, ну тут не известно, вполне возможно что и норм а возможно лучше вынести не в базовый класс а в трейт, или в сервис. И не факт что вызывать этот сервис в конструкторе, может быть опосредованно. И т.д. и т.п.
devweb99
@devweb99
Dec 02 2016 10:12
@Ellrion я имею ввиду большой класс разбитый по методам.
а неторые методы засунуть в Controller так как они там часто используются во многих классах )
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 10:13
@devweb99 тебе стоит почитать про паттерны и рефакторинг https://refactoring.guru/ru
Роман Сохарев
@greabock
Dec 02 2016 10:14
@Ellrion это плохая идея
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 10:15
@greabock ты обошто?
fakefakefake12
@fakefakefake12
Dec 02 2016 10:15
@Ellrion в печатном виде есть такое? Всегда хотел иметь на столе такую.
devweb99
@devweb99
Dec 02 2016 10:16
тоже препочту в печатном виде
Rahim
@happyhaha
Dec 02 2016 10:16
@Ellrion ой как же я тебе благодарен за ссылочку!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Роман Сохарев
@greabock
Dec 02 2016 10:17
@Ellrion это нужно читать для систематизации знаний, и заполнения пробелов скорее. Как "учебник" по рефакторингу это вряд ли подойдет. Люди начитавшись, начинают городить абстракции ради абстракций
Rahim
@happyhaha
Dec 02 2016 10:17
"Я программирую уже 13 лет. Начинал еще тогда, когда в винде не было кнопки Пуск." :D :D
devweb99
@devweb99
Dec 02 2016 10:18
@greabock программирую долго. Мне нужно структурировать все полученные знания
fakefakefake12
@fakefakefake12
Dec 02 2016 10:18
Посему и говорю, иметь на столе, чтобы тыкать в книгу по случаю чего.
devweb99
@devweb99
Dec 02 2016 10:20
на самом деле посоветуйте книгу
Rahim
@happyhaha
Dec 02 2016 10:21

"Чистый код проходит все тесты.

Если программа проходит только 95% тестов, значит где-то у вас завелся грязный код. Если у вас вообще нет тестов, вы не проходите этот пункт автоматически."

Если тестов в приложении нету, стоит ли остановить процесс дальнейшей разработки и уделить время тестам, или можно без них обойтись?
P.S. Я еще ни одного теста не написал( за все время ) :D

Alexander
@Dualse
Dec 02 2016 10:21
@happyhaha Ну если у тебя есть возможность, то пиши тесты
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 10:23
@happyhaha больная тема) да тесты маст хев, но в реальном мире их почти никто не пишет (по моему опыту). Правда если у тебя отдельная либа, да еще и публичная, то тесты точно нужны
Stanislav Yankovskiy
@stasyanko
Dec 02 2016 10:23
Народ, подскажите пожалуйста, как Вы делаете авторизацию для REST API под Android/IOS? Какие либы используете?
devweb99
@devweb99
Dec 02 2016 10:24
напиши сам )
Rahim
@happyhaha
Dec 02 2016 10:25
@Ellrion Ну смотри, сейчас разрабатываю блог\новостной сайт. Никаких излишеств в функцинонале, базовый крад покрывает 60% всей логики. Всеравно ли нужно писать тесты? или все-таки это зависит от ряда задач?
от сложности проекта (и надобности тестов) *
devweb99
@devweb99
Dec 02 2016 10:26
я crm делаю ) там тесты нужны )
fakefakefake12
@fakefakefake12
Dec 02 2016 10:27
от бюджета проекта, т.к. никто бесплатно их не пишет и не тратит времени.
Alexander
@Dualse
Dec 02 2016 10:27
@happyhaha Давай я тебе приведу пример. Через определенное время ты берешь еще одного разработчика для работы над проектам. После изменения кода, как он должен убедиться, что ничего не сломал?
Rahim
@happyhaha
Dec 02 2016 10:27
@Dualse тыкать и проверять...больше никак
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 10:28
@happyhaha снова общий ответ - тесты нужны. И чем больше тем лучше) Не писать тесты это технический долг и компромис. И каждый решает сам идет он на это или нет)
devweb99
@devweb99
Dec 02 2016 10:28
раньше тесты не кто не делал. ) и как то умудрялись тестировать сайты )
Alexander
@Dualse
Dec 02 2016 10:28
@happyhaha Ну и будет он каждый раз тратить по несколько часов на проверку, а ведь это время он мог бы дальше разрабатывать
Rahim
@happyhaha
Dec 02 2016 10:28
@Dualse Все, теперь дошло) спс
KarmaBot
@KarmaBot
Dec 02 2016 10:28
Спасибо (+1) для @Dualse принято! Текущая карма +113.
Alexander
@Dualse
Dec 02 2016 10:28
@devweb99 Тестили ручками?
devweb99
@devweb99
Dec 02 2016 10:29
@Dualse да
@Dualse если большой проект то большим колличеством рук
fakefakefake12
@fakefakefake12
Dec 02 2016 10:29
Посему оно и называется ручное тестирование.
Rahim
@happyhaha
Dec 02 2016 10:29
а тут одну команду запустил и все протестировалось))круто ведь?
может быть поэтому появилась позиция Тестировщик?)
Alexander
@Dualse
Dec 02 2016 10:30
@devweb99 А потом осознали, что это не продуктивно, автоматизировали процесс тестирования. Но люди все равно кладут х.... на написание тестов)
Rahim
@happyhaha
Dec 02 2016 10:30
отдельное тело для проверки прилоежния
devweb99
@devweb99
Dec 02 2016 10:30
мне проще руками
но
если что я куплю тестеровщика )
Alexander
@Dualse
Dec 02 2016 10:31
@devweb99 Ты ни разу не дорабатывал чужие проекты?
fakefakefake12
@fakefakefake12
Dec 02 2016 10:31
ух сколько я допиливал чужое без тестов :D
Rahim
@happyhaha
Dec 02 2016 10:31
@Dualse у меня бывает, затаив дыхание обновляешь страницу, и думаешь Хоть бы ничего не сломалось))))
devweb99
@devweb99
Dec 02 2016 10:31
@Dualse добивал )) но слава богу что там все норм было ))) и в чужем коде я хорошо арентируюсь
Rahim
@happyhaha
Dec 02 2016 10:31
@devweb99 сколько лет ты программируешь?)
devweb99
@devweb99
Dec 02 2016 10:32
@happyhaha это хорошее ощущение )) а щас без чуств это делается ) скучно ((
Rahim
@happyhaha
Dec 02 2016 10:32
@devweb99 ахаха)))
devweb99
@devweb99
Dec 02 2016 10:32
@happyhaha 8 лет.
Alexander
@Dualse
Dec 02 2016 10:32
Давайте лучше в оффтоп пойдем. https://gitter.im/LaravelRUS/offtop
Rahim
@happyhaha
Dec 02 2016 10:32
@devweb99 особенно на глазах заказчика))или клиента
devweb99
@devweb99
Dec 02 2016 10:33
@happyhaha еще и адреналин. Когда ты понимаешь что если что то тебе денег не дадут ))
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 10:34
@devweb99 8 сука лет и ты незнаешь " понимание автозагрузки, паттерна синглтон, статических методов" ??!
devweb99
@devweb99
Dec 02 2016 10:35
@Ellrion я это все знаю. Мне нужно все по полкам разместить. Я особо все в термены не вникался. Но было куча практики. Я до всего этого сам дошел без книг. Мне просто нужно термены подучить и понять что к чему это относится.
@Ellrion поэтаму я спрашиваю хорошую добротную книгу. Но мне так не кто не ответил
fakefakefake12
@fakefakefake12
Dec 02 2016 10:36
И такое бывает не спорю. Но как один человек сказал, программист не хирург, можно и костыльнусть :D
devweb99
@devweb99
Dec 02 2016 10:37
@fakefakefake12 я за правильный код. Я всегда модифицировал свой код под приемлемый вид. (читаемость логика и т.д)
я про фасады прочитал. Оказалось что я уже как 5 лет их использую
Alexander
@Dualse
Dec 02 2016 10:41
@devweb99 Держи медальку за разработку своих велосипедов)
devweb99
@devweb99
Dec 02 2016 10:44
@Dualse спасибо ) я считаю изобретать нужно всегда. Скоро программирования будет как шаблонный робот делать. И в итоге не кокого развития. Я без книг делал вещи которые вы называете фасадами контенерами и т.д ) если я дальше так буду делать то я дальше всех уйду. Но по полачкам мне нужно разместить знания. Мне так и не кто не написал не одну книгу ((
KarmaBot
@KarmaBot
Dec 02 2016 10:44
Спасибо (+1) для @Dualse принято! Текущая карма +114.
Rahim
@happyhaha
Dec 02 2016 10:44
@devweb99 какую книгу ты хочешь?
devweb99
@devweb99
Dec 02 2016 10:45
@happyhaha патерны и все что касается к проектированию кода на уровне своего фреймворка )
Rahim
@happyhaha
Dec 02 2016 10:46
@devweb99 Head First, Паттерны проектирования. Если что сразу Банду четырех
devweb99
@devweb99
Dec 02 2016 10:46
@happyhaha она на русском ?
Alexander
@Dualse
Dec 02 2016 10:46
@devweb99 Ошибаешься. Почему-то не одно страна еще будучи в изоляции и отказа от заграничных технологий не ушла дальше всех, а наоборот в итоге отстала. Потому-что пока она изобретала то, что другие уже пару лет как используют
Rahim
@happyhaha
Dec 02 2016 10:47
@devweb99 потом Стив Макконел Совершенный код. В ней как раз уделяется внимание проектированию как отдельному процессу разработки
Alexander Avakov
@pinguinjkeke
Dec 02 2016 10:47

Всем привет. Помогите советом. Нужно организовать поиск по:
полному имени пользователя (в БД разделено first_name, last_name, second_name)
по почте (по полю email)

Хотелось бы поиск сделать живым (при вводе нескольких символов выводить результат)
Не хочу делать CONCAT(first_name, " ", last_name)... CONCAT(last_name, " ", first_name)

KarmaBot
@KarmaBot
Dec 02 2016 10:47
Будь как дома, @pinguinjkeke, я ни в чем не откажу. Много мануалов, коль желаешь, покажу :)
Alexander
@Dualse
Dec 02 2016 10:47
Может все таки в оффтоп пойдем? Он для этого и создан
devweb99
@devweb99
Dec 02 2016 10:48
@Dualse это всего лишь случай. Может какой нить уникум сидит на своем фреймворке и не выкладывает сеть. Ты же не знаешь ))
Alexander Avakov
@pinguinjkeke
Dec 02 2016 10:48
TNTSearch - полнотекстовый, я не смогу фильтровать по конкретному полю ведь
Alexander
@Dualse
Dec 02 2016 10:49

@Dualse это всего лишь случай. Может какой нить уникум сидит на своем фреймворке и не выкладывает сеть. Ты же не знаешь ))

@devweb99 :point_up: 2 декабря 2016 г., 16:47

Rahim
@happyhaha
Dec 02 2016 10:49
гоу туда реально, а то неудобняк
devweb99
@devweb99
Dec 02 2016 10:49
@happyhaha спасибо
@Dualse )
@Dualse да я уже скоро в офф. Скоро домой уже пойду ) (я на работе)
Rahim
@happyhaha
Dec 02 2016 10:51
@devweb99 Я думал ты 99го года))))
Alexander Avakov
@pinguinjkeke
Dec 02 2016 10:52
Или в TNT search можно создать разные индексы для разных полей. index.user.email, index.user.full_name
devweb99
@devweb99
Dec 02 2016 10:52
@happyhaha 89
Sergey
@UnQuaiz
Dec 02 2016 11:52
@devweb99 то что ты писал фасады не зная что это - это ещё не значит что ты их сам придумал. просто то что ты писал - велосипед под названием фасад - часто используемый паттерн. просто иногда программеры садятся и думают, как же нам говорить-то на одном языке! берут и придумывают описывать некоторые аспекты реализации/проектирования/дизайна - паттернами - это чтобы один назвал паттерн по имени, а второй зная что скрывается под этим словом - понял о чем речь.
Чтобы не как Васи в гараже "подай мне вот херовину! да не ту херовину, а вот эту!". Всё это делается для того чтобы отдельные Васи могли "коллаборировать" - тобишь сотрудничать, делиться опытом.
Представь что ты не знаешь что класс называется классом, интерфейс - интерфейсом, и что такое переменная - хотя каждый день их используешь. И ты решил рассказать другому программисту что ты делаешь... что у тебя за словесная конструкция получится ?
@devweb99 ну и вопрос: как ты изобретая велосипеды сможешь уйти дальше, если ты точно так же останешься тем самым гаражным васей который делает велосипеды не выходя из гаража, и абсолютно не владеет терминологией)
простите, я заоффтопил немного
Anton Kartsev
@bigperson
Dec 02 2016 11:58
Привет всем. Подскажите можно ли жадно подгружать результат аксессора при получении коллекции?
KarmaBot
@KarmaBot
Dec 02 2016 11:58
Приветствую тебя, @bigperson!
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 11:59
@bigperson акцессоры не должны обращаться в базу. Так что твой вопрос не корретен
Zlatoslav Desyatnikov
@zlodes
Dec 02 2016 11:59
@bigperson, привет, думаю, тебе нужен appends
Anton Kartsev
@bigperson
Dec 02 2016 12:00
@zlodes Спасибо, то, что нужно
KarmaBot
@KarmaBot
Dec 02 2016 12:00
Спасибо (+1) для @zlodes принято! Текущая карма +14.
Anton Kartsev
@bigperson
Dec 02 2016 12:00
А то уже думал презентеры изучить))
Zlatoslav Desyatnikov
@zlodes
Dec 02 2016 12:01
@bigperson, NOT TODAY!
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 12:29
Господа, есть вопрос. Кто сталкивался (и как решил естественно) с такой проблемой: есть некоторая форма редактирования модели. попадаем мы на неё из разных мест (например со страницы со списком моделей, или со страницы просмотра модели) И нужно сделать кнопку Cancel (back). Но указать конкретный роут мы не можем, так как их несколько. Есть у нас конечно url()->previous() но вот беда что если после отправки формы мы возвращаемся обратно с ошибками, то и previous нам будет содержать урл самой формы редактирования.
JhaoDa
@jhaoda
Dec 02 2016 12:31
@devweb99 трое суток бана за флуд и нежелание читать документацию
JhaoDa
@jhaoda
Dec 02 2016 12:41
Интересно, на чем он 8 лет программирует и где?...
Zlatoslav Desyatnikov
@zlodes
Dec 02 2016 12:53
@jhaoda, 1С может быть :D
JhaoDa
@jhaoda
Dec 02 2016 13:10
Ну всё, 7.1 релизнули официально
Viktor Pavlov
@zogxray
Dec 02 2016 13:10
@Ellrion в сессию положи при заходе в форму.
evgeniy-n
@evgeniy-n
Dec 02 2016 13:17
@Ellrion @zogxray В сессию ложить не вариант (в админке может быть открыто несколько страниц исходных и можно сделать два последовательных перехода с разных страниц это перетрет значение в сессии).
Если нет ограничений (логических) можешь просто ставить get параметр при переходу на форму типа: route('model-edit', [$modelId, 'from' => url()->current()]); и этот гет параметр фром, ставить как линк на кнопку Back.
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 13:22
@zogxray через сессию там не всё так просто если ты подумаешь, и дело не только в нескольких окнах. @evgeniy-n да с таким гет параметром это конечно именно то что первым приходит в голову... не нравится только момент что нужно везде протаскивать этот параметр
Dave
@aios
Dec 02 2016 13:27
@Ellrion я бы на роуты где вью формы вешал бы мидлу - в ней бы совал current()
@Ellrion повесил бы слушатель laravel.done
и в нем бы убивал сессию.
ну а кнопку соответсвенно рендерил с урлом от сессии
соответственно несколько вкладок не проблема.
Vitaly Voskobovich
@voskobovich
Dec 02 2016 13:28
@Ellrion храни ссылкт в атрибуте формы раз гет парметр не нравится или сессия. Скрытое поле наверное последний вариант :)
Dave
@aios
Dec 02 2016 13:29
рендер то уже произошел.
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 13:29
@aios ну так а как бы тебе это помогло получить этот урл в момент когда тебя возвращает после фэйла валидации?
@voskobovich о а вот это уже идея. спс
Vitaly Voskobovich
@voskobovich
Dec 02 2016 13:31
@Ellrion хм, можно лучше даже сделать. в data param JS хранить ссылку
при клике JS обрабатываешь параметр у кнопку и редиректишь
типа <button data-back-url="...">back</button>
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 13:31
@voskobovich эм это ты уже что то не о том. кнопка это обычная ссылка. тут нет проблем
Vitaly Voskobovich
@voskobovich
Dec 02 2016 13:33
@Ellrion а, хм... ну оно и работать не будет) Забей
Dave
@aios
Dec 02 2016 13:33
@Ellrion я может не верно понял задачу - тебе нужно сохранять ссылку даже когда отправили данные?
@Ellrion можно убивать сессию при любом методе - кроме post
ну и задача у тебя более бекендовая - не зачем перекладывать ее на фронт.
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 13:34
еще раз для тех кто не понял в чём трабл: Вот зашел я первый раз на роут с формой, круто, я знаю откуда я пришел, я поставил это как линк для кнопки назад. Но если я нажал отправить, а из-за ошибки валидации меня опять кинуло на эту страничку, а я опять возьму урл реферрера, то я по кнопке кэнсел буду тупо обновлять страницу с формой.
Dave
@aios
Dec 02 2016 13:34
@Ellrion не будешь.
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 13:34
@aios буду)
Vitaly Voskobovich
@voskobovich
Dec 02 2016 13:35
@aios будет)
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 13:35
@aios в этом же и трабл с сессий.
Dave
@aios
Dec 02 2016 13:37
Вы сессию сохраняете До того как отправите форму
мидлу вешаете только на ГЕТ
то есть в пост он не перепишется
Vitaly Voskobovich
@voskobovich
Dec 02 2016 13:37
@aios но ссылка back уникальная для формы.
а сессия одна на весь сайт.
Значит логичнее в форме хранить :) напримерв hidden поле
Dave
@aios
Dec 02 2016 13:38
ну то есть тоже самое что я предложил только на фронте.
Vitaly Voskobovich
@voskobovich
Dec 02 2016 13:39
ну наверное)
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 13:39
@aios ты когда с поста редиректнешься из-за ошибки валидации. ты как определишь что не надо сессию переписывать?
Evgeni Razumov
@enniel
Dec 02 2016 13:41
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 13:41
@enniel красавчик, ну давай расскажи как она мне поможет?
Vitaly Voskobovich
@voskobovich
Dec 02 2016 13:41
@enniel история одна на все формы
как и сессия
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 13:42
@voskobovich да даже если забить на проблему нескольких вкладок. всё равно не катит
evgeniy-n
@evgeniy-n
Dec 02 2016 13:44
ненавязчиво повторюсь про имя роута в гет пераметре при переходе на форму ))
Dave
@aios
Dec 02 2016 13:44
@Ellrion ммм проверить роут с которого мы редиректнулись пост он не пост
Vitaly Voskobovich
@voskobovich
Dec 02 2016 13:45
@evgeniy-n решение норм, но не красивое немного)
да и при передаче ссылки оно будет
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 13:46
@aios как ты проверишь каким методом был запущен реферрер?
Dave
@aios
Dec 02 2016 13:46
@Ellrion всмысле каким
2 роута
some/form get
some2/form get
на них мидла
у форм есть
some/form post
some2/form post
Vitaly Voskobovich
@voskobovich
Dec 02 2016 13:47
что такое мидла на языке лары?
Dave
@aios
Dec 02 2016 13:47
мидлварь
Vitaly Voskobovich
@voskobovich
Dec 02 2016 13:47
догадывался)
Dave
@aios
Dec 02 2016 13:48
в laravel.done делаешь обработчик этой самой сесии - может где то поближе весь листинг эвентов я не думаю что для тебя проблема найти
получаешь Url::previous
матчиш роут
получаешь пост не пост
и у тебя в сессии остается то что нужно
нет?
evgeniy-n
@evgeniy-n
Dec 02 2016 13:48
@aios нет
Dave
@aios
Dec 02 2016 13:48
@evgeniy-n я бы так категоричен не был.
evgeniy-n
@evgeniy-n
Dec 02 2016 13:48
@aios Route::match([get, post], 'link/here')
@aios как тут проверишь?
Zlatoslav Desyatnikov
@zlodes
Dec 02 2016 13:49
@aios, пиши плз мысли в одно сообщение, а то количество непрочитанных растёт :(
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 13:49
@aios ну блин мне матчить предыдущий урл только что бы понять что меня не редиректнуло...., да еще и при матчинге бинды сработают
Dave
@aios
Dec 02 2016 13:49
@Ellrion ну нет в ларавеле больше способов получить роут откуда ты редиректнулся. только костыль.
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 13:50
@aios дорого просто.
Dave
@aios
Dec 02 2016 13:50
@Ellrion зато правильно - и юзер ниче не увидит.
DeaDSandro
@DeaDSandro
Dec 02 2016 13:51
а чем решение с GET параметром не устроило?
я хотел подробно описать, да выше уже вроде бы писали про это
Dave
@aios
Dec 02 2016 13:51
@DeaDSandro пользователю вообще не желательно что либо поазывать.
evgeniy-n
@evgeniy-n
Dec 02 2016 13:52
@Ellrion Ты хочешь красиво? тут есть другой рецепт, правда немного муторный.
Короче на форму ты делаешь ссылку в виде route('edit', [$id, 'from' => $currentUrl]))
В екшене который рендерит форму чекаешь этот гет параметр загоняешь его в queued cookie делаешь редирект на этот же екшен только без гет параметра, проверяешь наличие куки и загоняешь ее значение в хидден поле, через те же queued cookie куку удаляешь. Profit!
я только упустил кому нужен этот ответ был ))
DeaDSandro
@DeaDSandro
Dec 02 2016 13:54
@aios пользователю пофиг, что мы ему показываем. а в "современных браузерах" юзерам вообще только урл показывают или только заголовок. и это решение используется в т.ч. на сайтах уровня дропбокса
evgeniy-n
@evgeniy-n
Dec 02 2016 13:57
@Ellrion помогло?
Dave
@aios
Dec 02 2016 13:58
@DeaDSandro примеры есть?
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 13:59
@DeaDSandro не устроило то, что нужно "таскать" обратный линк захломляя адресную строку, плюс незабывать добавлять этот параметр.
@evgeniy-n я выбрал другой вариант. щас тестану и расскажу
DeaDSandro
@DeaDSandro
Dec 02 2016 14:00
Dave
@aios
Dec 02 2016 14:01
@DeaDSandro ну это полная дичь как по мне.
DeaDSandro
@DeaDSandro
Dec 02 2016 14:01
Чем проще решение, тем лучше. Вы сейчас до хранения каждого посещения формы в редисе дойдете
Vitaly Voskobovich
@voskobovich
Dec 02 2016 14:11
@DeaDSandro @aios @Ellrion как бы на длинну get параметра есть органичения. То есть теоретически может быть так, что ссылки с куей фильтров уже работать не будут. Хотя и на размер POST параметра есть ограничения...
но я бы выбрал хранение обратной ссылки в hidden поле формы. Написать это в базовом классе реализации формы или модели и забыть на всегда. Плсю автоматически появится во всех других формах. каждый раз тянуть ссылку... не очень
DeaDSandro
@DeaDSandro
Dec 02 2016 14:12
@voskobovich а потом ты эту ссылку вставишь в кнопку BAck и О БОЖЕ ОНА ЖЕ БУДЕТ СЛИШКОМ ДЛИННАЯ
Vitaly Voskobovich
@voskobovich
Dec 02 2016 14:13
@DeaDSandro если по этой ссылке получилось перейти чтобы увидеть страницу и с нее перейти кудато еще... то ошибки не будет))
логическая же цепочка...
а вот если ты сперва перешел по ссылке и было все ок
а потом ты к этой ссылке прихерачил еще часть символов, то есть шанс что уже работать не будет
evgeniy-n
@evgeniy-n
Dec 02 2016 14:15
тут модеры есть вообще? помоему тут 80% офтопа просто )))
Vitaly Voskobovich
@voskobovich
Dec 02 2016 14:15
@evgeniy-n а в этом чате банят?
Artur Gafurov
@assurrussa
Dec 02 2016 14:15
@voskobovich да
Vitaly Voskobovich
@voskobovich
Dec 02 2016 14:15
хорошо что я не пишу на ларе)
так что бан в этом чате не страшен)
evgeniy-n
@evgeniy-n
Dec 02 2016 14:16
@voskobovich лул
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 14:23

Итак выбранное решение. спс еще раз @voskobovich. Суть проста, передаем ссылку в хидден поле формы.
сделаем хелпер

if (! function_exists('back_link_field')) {
    /**
     * Generate a form field to saving back url for forms.
     *
     * @param  mixed  $fallback
     * @return \Illuminate\Support\HtmlString
     */
    function back_link_field($fallback = false)
    {
        $link = old('_back', url()->previous($fallback));
        return new \Illuminate\Support\HtmlString('<input type="hidden" name="_back" value="'.$link.'">');
    }
}

и можно сделать второй хелпер для получения самой ссылки, ну или в моем случае это макрос для UrlGenerator'а

        $generator->macro('back', function ($fallback = false) {
            return $this->request->old('_back', $this->previous($fallback));
        });

теперь на форме используем например так:

                {{ back_link_field(route('model.show', [$model])) }}
                <a href="{{ url()->back(route('dsps.show', [$model])) }}" class="uk-button">Cancel</a>
Dave
@aios
Dec 02 2016 14:27
Как заставить Request понимать с какой моделью к нему прилетел запрос?
углубляюсь все ниже - и понимаю что нужно писать некие стебы сравнения параметров.
evgeniy-n
@evgeniy-n
Dec 02 2016 14:27
@Ellrion это решение сыпется на фейле валидации, после редиректа с ошибками валидации, в тоем поле будет текущий адрес
Dave
@aios
Dec 02 2016 14:28
но как то костыльно это все.
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 14:28
@evgeniy-n нет не будет, он возьмется из old
evgeniy-n
@evgeniy-n
Dec 02 2016 14:29
@Ellrion справедливо. тогда плюсую, норм решение )
@aios это ты про implicit model binding?
Dave
@aios
Dec 02 2016 14:30
@evgeniy-n да только про динамичный.
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 14:30
почему именно этот подход: не нужно помнить в точках в которых делаешь саму ссылку о необходимости прописать back параметр; не забивается url; остальные решения или недееспособны или дороги (как вариант с матчингом реферрера). единственный имхо минус, fallback дважды. но тут я хз что делать пока
evgeniy-n
@evgeniy-n
Dec 02 2016 14:31
@aios как это динамичный? пример задачи есть?
Dave
@aios
Dec 02 2016 14:32
@evgeniy-n Полиморфная связь коментов, сущностей скажем три - новости, фотки, блоги.
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 14:32
@aios а тупо имя класса модели прокинуть?
Dave
@aios
Dec 02 2016 14:32
@Ellrion и так с каждой моделью?
@evgeniy-n и общий контроллер добавления коментов
evgeniy-n
@evgeniy-n
Dec 02 2016 14:33
Relation::morphMap([
'posts' => App\Post::class,
'videos' => App\Video::class,
]);
Dave
@aios
Dec 02 2016 14:33
@evgeniy-n так вот хочется что бы метод этого контроллера магическим образом понял откуда я добавляю комент с фотки, блога или новости.
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 14:33
@aios у меня похожая задача, только там история изменения моделей. сделал
    public static function urlToEntityHistory(Entity $entity)
    {
        return route('logs.history', ['entity_id' => $entity->getKey(), 'entity_type' => $entity->getMorphClass()]);
    }
Dave
@aios
Dec 02 2016 14:34
@Ellrion О вроде похоже..
а не..
@evgeniy-n так морф мап что мне дает?
аа понял - не - немного не то.
evgeniy-n
@evgeniy-n
Dec 02 2016 14:35
@aios Relation::morphMap
а потом коменты создаешь по роуту /comment/{type}/{id}
Dave
@aios
Dec 02 2016 14:35
@evgeniy-n не совсем то. потому что это нужно прописывать в морфе трейта.
а мне хочется только трейт подключать.
@Ellrion Entity как то можно обобщить?
@Ellrion потому что такой метод подойдет для конкретной сущности
а мне нужно для группы - в которой этот морф есть.
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 14:36
@aios это базовая модель
@aios можно тупо Illuminate\Database\Eloquent\Model
Dave
@aios
Dec 02 2016 14:37
я может туплю - но в ларе нет такого класса Entity
Artur Gafurov
@assurrussa
Dec 02 2016 14:37
@Ellrion +
Dave
@aios
Dec 02 2016 14:37
есть Model
Сейчас рискну.
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 14:37
@aios ну у меня она переименована) сорян что запутал)
Dave
@aios
Dec 02 2016 14:38
@Ellrion я уж было не было подумал что ты к нам из Симфони-вселенной перебрался)
@Ellrion хм.. включаю голову. Допустим я отправил пост запрос на контроллер из blog/1/comments
Как commentController@store поймет что я блоги имел ввиду.
что то тут не чисто.
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 14:41
@aios ты там линк выставляешь у формы
action="{{ url()->toCreateComment($blog) }}"
Dave
@aios
Dec 02 2016 14:42
Тфу блин.
ну я и лузер.
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 14:42
ну а в роуте уже
Comment::create(['entity_id' => $request->input('entity_id'), 'entity_type' => $request->input('entity_type'), ....])
Dave
@aios
Dec 02 2016 15:11
@Ellrion toCreateComment это типо магия?
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 15:15
@aios ну это у меня для UrlGemerator макросы прописаны. Т.е. я сами хелперные функции генерации url делаю как статик методы контроллера (иногда), а потом делаю макросы в UrlGemerator для вызова. Так и короче выходит и консистентнее
Sergey
@UnQuaiz
Dec 02 2016 15:16
в Yii был подход в форме поля именовать по названию модели типа <input name='User[name]'> а в самом контроллере в любом месте получал из запроса сразу по классу модели
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 15:18
@aios т.е. вот в AppServiceProvider
class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        $this->bootUrlGeneratorHelpers();
    }

    protected function bootUrlGeneratorHelpers()
    {
        $generator = $this->app->make(UrlGenerator::class);
        $generator->macro('toEntityHistory', function ($entity) {
            return LogsController::urlToEntityHistory($entity);
        });
//...
    }
Dave
@aios
Dec 02 2016 15:18
@Ellrion ну видно что магия а твоя или Тейлора уже не важно. Но в целом это круто спасибо
KarmaBot
@KarmaBot
Dec 02 2016 15:18
Спасибо (+1) для @Ellrion принято! Текущая карма +154.
JhaoDa
@jhaoda
Dec 02 2016 15:19
@Ellrion а что делать с тем, что шторм ругается на toCreateComment, мол, нет такого метода?
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 15:20
@jhaoda ну он и на url()->previous() ругается( Вообще можно в ide хелпере прописать наверное
JhaoDa
@jhaoda
Dec 02 2016 15:22
@Ellrion можно, но не так просто. Я так делаю, но как-то уныло это...
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 15:23
@jhaoda есть немного. Ну можно так статик метод из контроллера и юзать, но длинно очень выходит
Виталя
@ferraghue
Dec 02 2016 15:54
Привет. Юзает ли кто Pusher.io ? У них на фри тарифе есть 200к сообщений в день. Насколько это много\мало в реальных условиях использования.
Вкратце - это админка на 20 человек, реально активных до 10 в типичный рабочий график с 8\10 часов до вечера.
KarmaBot
@KarmaBot
Dec 02 2016 15:54
@mrfanta, и тебе привет ;)
Ivan
@Hunternnm
Dec 02 2016 15:58
@mrfanta а чем onesignal не подошел?
Vlae
@Vlae
Dec 02 2016 15:59
Здравствуйте, начал изучать Laravel относительно недавно, и хочу разобрать какой-то реальный Open Source проект (сложность: чуть ниже среднего), чтобы подсмотреть хорошие практики от опытных разработчиков. Может кто знает такой проект и подскажет название / скинет ссылку на гит
KarmaBot
@KarmaBot
Dec 02 2016 15:59
@Vlae, ну рассказывай. Как жизнь? :)
Виталя
@ferraghue
Dec 02 2016 15:59
@Hunternnm
не слышал про него
Ivan
@Hunternnm
Dec 02 2016 15:59
Виталя
@ferraghue
Dec 02 2016 16:01
@Hunternnm да, спс читаю. Мне нужны вебсокеты, аля риалтайм лог. Он подойдет?
Arsen Soroka
@arsen-s
Dec 02 2016 16:01
@mrfanta так сокеты это сокеты... а то - пуши
Vlae
@Vlae
Dec 02 2016 16:02
@arsen-s @Hunternnm спасибо!
KarmaBot
@KarmaBot
Dec 02 2016 16:02
Спасибо (+1) для @arsen-s принято! Текущая карма +145.
Спасибо (+1) для @Hunternnm принято! Текущая карма +298.
Myroslav Zozulia
@diwms
Dec 02 2016 16:41

Ребят, Доброго вечера!
Я еще сюда зайду спросить как юнит тесты писать правильно :D

Не могу Propel замокать для теста. Модели выходит не шарятся через всю систему и скажем после того как я замокал модельку у меня в сервисе
User::create() вернет новый инстанс а не инстанс моего мока..
Есть идея как подключиться пропелу и указать ему что бы юзал мой мок а не стандартную модель?

KarmaBot
@KarmaBot
Dec 02 2016 16:41
Приветствую тебя, @diwms!
Myroslav Zozulia
@diwms
Dec 02 2016 16:41
Карма бот, и тебе привет. Давно не виделись :D
KarmaBot
@KarmaBot
Dec 02 2016 16:41
@diwms, привет, как настроение?
Myroslav Zozulia
@diwms
Dec 02 2016 16:41
@KarmaBot настроение огонь. пятница же :D
Anton Kazakov
@venila
Dec 02 2016 18:13
Всем привет! Как в Pagination сделать так, чтобы отображало 5 страниц максимум?
KarmaBot
@KarmaBot
Dec 02 2016 18:13
@venila даров!
Dave
@aios
Dec 02 2016 18:34
@Ellrion Спасибо
KarmaBot
@KarmaBot
Dec 02 2016 18:34
Спасибо (+1) для @Ellrion принято! Текущая карма +155.
Dave
@aios
Dec 02 2016 18:34
Все работает )
Maksim (Ellrion) Platonov
@Ellrion
Dec 02 2016 18:34
ок)
Dmitry
@kdes70
Dec 02 2016 19:25
Спасибо)
KarmaBot
@KarmaBot
Dec 02 2016 19:25
@kdes70, в этом чате принято добавлять имя пользователя, чтобы его поблагодарить.
Vlae
@Vlae
Dec 02 2016 20:28
какой бот умный)