These are chat archives for LaravelRUS/chat

24th
Aug 2015
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 01:32
опа
спецсмайл грибка :mushroom:
а у меня такого нет
=(
Maxim
@Big-Shark
Aug 24 2015 03:03
@greabock это чтож у тебя за мать такая?
@greabock я код интел на убунту тоже не смог номрально запустить
Роман Сохарев
@greabock
Aug 24 2015 03:33
@Big-Shark на чипе p55
Devalgo
@almassar
Aug 24 2015 03:41
всем привет, какими хостингами вы пользуетесь, разумеется с учетом того что пишем под laravel?
Роман Сохарев
@greabock
Aug 24 2015 03:58
@almassar напиши Алексею aka @Butochnikov он тебе всё про это расскажет.
Chimit
@chimit
Aug 24 2015 04:17
Друзья, подскажите, где лучше хранить для быстрого доступа user_id, если не в сессии? У меня API, сессии отключены, инфа о юзере приходит в header в виде JSON WebToken. Каждый раз расшифровывать будет накладно. Хочу один раз расшифровать и куда-нибудь положить. Вопрос: куда?
Роман Сохарев
@greabock
Aug 24 2015 04:20

У меня API, сессии отключены

уволь своего хостера XD

ну а если серьезно, то ответ прям таки напрашивается сам собой. Где хранить данные?

Chimit
@chimit
Aug 24 2015 04:21
не, сессии в смысле я не использую))
БД дергать совсем не вариант
Роман Сохарев
@greabock
Aug 24 2015 04:22
и тут мы внезапно вспоминаем про кеширование...
один-то раз ты можешь бд "дернуть"?
Chimit
@chimit
Aug 24 2015 04:25
не знаю, как мне БД может помочь идентифицировать юзера, если ни куки, ни сессии не используются. Нужно что-то вроде константы.
Роман Сохарев
@greabock
Aug 24 2015 04:26
Обрисуй задачу на предметной области. А то может ты не тем вообще занимаешься
JhaoDa
@jhaoda
Aug 24 2015 04:26
@Chimit JSON WebToken это и есть «сессионный идентификатор»
Роман Сохарев
@greabock
Aug 24 2015 04:26
типа того
JhaoDa
@jhaoda
Aug 24 2015 04:26
Но так как это не сессия на самом деле, то тебе придется самому выполнять её задачи
Т.е. при каждом запросе тебе надо откуда-то получать какую-то инфу, опираясь на токен
БД, Redis, Memcache — выбирай.
Роман Сохарев
@greabock
Aug 24 2015 04:28
^ о чем я и говорил =)
Chimit
@chimit
Aug 24 2015 04:29
Middleware расшифровывает JWT из Header и получает все данные из ее payload и проверяет, может ли юзер делать тот или иной запрос. Далее мне надо в контроллере получить некоторые данные из этого Payload. По-простому можно было бы просто еще раз расшифровать JWT, но мне думается, каждый раз расшифровывать дело не совсем хорошее, потому было бы удобно при первой расшифровке эти данные массивом где-нибудь сохранить, типа в константе что ли.
JhaoDa
@jhaoda
Aug 24 2015 04:30
«При первой расшифровке» это в рамках одного запроса?
Chimit
@chimit
Aug 24 2015 04:31
да
JhaoDa
@jhaoda
Aug 24 2015 04:31
Т.е. мидлваря расшифровала, проверила права, запрос пошел в контроллер и вот он, контроллер, тоже хотел бы пользоваться этими расшифрованными данными?
Записывай их в реквест. Или в контейнер.
Chimit
@chimit
Aug 24 2015 04:31
да-да
а можно примеры?
JhaoDa
@jhaoda
Aug 24 2015 04:35
@Chimit чего? Как в реквест или контейнер записать? Ты шутишь?
Роман Сохарев
@greabock
Aug 24 2015 04:35
Мне кажется, что тут отлично смотрелся бы свой класс с синглтоном в контейнере
Chimit
@chimit
Aug 24 2015 04:37
у меня тут lumen без фасадов) ладно, спасибо за ценные советы
Роман Сохарев
@greabock
Aug 24 2015 04:38
@Chimit а фасады-то тут при чем?
This message was deleted
Роман Сохарев
@greabock
Aug 24 2015 04:54
class MySuperIdentificator {

     protected $jwt;

     protected $decryptedData;  

     public function identificate($jwt)
     {
             $this->jwt = $jwt;

             return $this->decryptedData = $this->decrypt($jwt);
     }

     public function getData()
     {
           return $this->decriptedData;
     }

     public function getJwt()
     {
          return $this->jwt;
     }

     protected function decrypt($jwt)
     {
            // тут твоя логика, которая декриптит $jwt и возвращает данные
     }
}

Внедряем в миддлварю через IoC и используем


public function __construct(MySuperIdentificator  $identificator )
{

     $this->identificator = $identificator ;

}

public function  handle($request)
{
         $data = $this->identificator->identificate($request->header('Super-Secret-Token'));
}

в контроллере тоже самое

 public function index(MySuperIdentificator  $identificator)
 {
             $data = $identificator->getData();
  }
@Chimit
@Chimit и вообще, пойди почитай =)
Chimit
@chimit
Aug 24 2015 05:11
ммм... вот оно как по уму-то должно быть. Спасибо, будем юзать
Maxim
@Big-Shark
Aug 24 2015 06:23
<?= @$extras[$extra->id] ? : $extra->max ?>
Надеюсь в аду есть места для тех кто используте @ в тех местах где можно обойтись и без нее.
Mihail
@sektor-sumy
Aug 24 2015 06:26
@Big-Shark +
berpcor
@berpcor
Aug 24 2015 06:31
В Laravel есть какой-нибудь функционал из коробки для того, чтобы забрать doc block из метода?
Maxim
@Big-Shark
Aug 24 2015 06:34
@berpcor если мне не изменяет память, он есть в пхп из коробки
alex
@eskrano
Aug 24 2015 06:44
@Big-Shark там отдельный "басейн" .
Maxim
@Big-Shark
Aug 24 2015 06:44
@eskrano с горячим маслом?
alex
@eskrano
Aug 24 2015 06:45
@Big-Shark с раскаленным . Подогрев лавой осуществляется до полного кипения .
projct1
@projct1
Aug 24 2015 07:35
подскажите плз следующую ситуацию:
когда я бегу в цикле и обращаюсь каждый раз $category->image (рилейшен hasOne), то ларавель будет каждый раз запрос делать? или там ленивая загрузка есть? я слабо понял этот момент...
<div class="row">
    @foreach ($categoryList as $category)
        <div class="col-xxs-1 col-xs-6 col-sm-6 col-md-4 col-lg-3 text-center">
            <a href="/{!! $category->slug !!}" class="show list-item">
                @if ($category->image !== null)
                    <img src="{{ \App\Jobs\ProcessGallery::getImageUrl($category->image->product_id, $category->image->alias . '_s.jpg') }}"
                         alt="{{ $category->image->alias }}"
                         title="{{ $category->image->description }}"
                         class="img-responsive center-block">
                @endif
                {!! $category->name !!}
            </a>
        </div>
    @endforeach
</div>
Alex Soveliev
@suroviy
Aug 24 2015 07:41
@rorc в запросе перед get() выполни загрузку Model::where()->with('image')->get();
projct1
@projct1
Aug 24 2015 07:41
@suroviy ок, спс
Maxim
@Big-Shark
Aug 24 2015 08:11
Народ, кто какие инструменты знает которые генерят блашки для гитхаба, для опенсорс кода, я знаю пока только эти StyleCI, Travis, Scrutinizer, Code Climate, Is it maintained
А вообще - http://shields.io
Maxim
@Big-Shark
Aug 24 2015 08:15
То что надо) Пишу небольшо инструмент для вывода бейджев по нужным репам)
Oleg
@Malezha
Aug 24 2015 08:16
Рад помочь)
Seba
@Siebov
Aug 24 2015 08:25
всем привет.
подскажите, пжлст, правильно ли я понимаю, что шаблоны blade - это типа вьюха с более лаконичным синтаксисом?
есть кто живой???
JhaoDa
@jhaoda
Aug 24 2015 08:29
Удивительно, за 3 минуты не ответили — трагедия
Seba
@Siebov
Aug 24 2015 08:29
так ответь, пжлст;)
JhaoDa
@jhaoda
Aug 24 2015 08:30
@Sebbba «с более лаконичным» чем где?
Чем в чистом РНР? Да.
Seba
@Siebov
Aug 24 2015 08:31
@jhaoda так, отлично. и второй и самый главный вопрос.
как вызвать вьюху - понятно.
а как вызвать вот такой вот блэйд-шаблон?
какой командой это делается?
JhaoDa
@jhaoda
Aug 24 2015 08:31
@Sebbba куда/откуда вызвать?
Seba
@Siebov
Aug 24 2015 08:33
смотри.
вьюха возвращается вот так return view('admin/profile', $data);
а как вернуть блэйд - шпблон?
JhaoDa
@jhaoda
Aug 24 2015 08:33
@Sebbba зачем, если не секрет?
Seba
@Siebov
Aug 24 2015 08:34
@jhaoda я кажется чего-то не понимаю.
ладно, подумаю ещё и спрошу
JhaoDa
@jhaoda
Aug 24 2015 08:34
@Sebbba вьюха и есть шаблон
jongleb
@jongleb
Aug 24 2015 08:34
Всем привет малех запутался, как сделать многие ко многим выборку к из 3 таблицы. ('App\Some3rdTable', 'some_3rd_table', 'first_table_id', 'second_table_id'); Что не так?
JhaoDa
@jhaoda
Aug 24 2015 08:34
Используешь ты там блэйд, не используешь — какая разница?
Seba
@Siebov
Aug 24 2015 08:35
@jhaoda т.е. если во вьюхе я пишу блэйд - единственное отличие - это расширение блэйд.пхп, а обращаюсь я с этим файлом, как с обычной вьюхой?
правильно я понимаю?
JhaoDa
@jhaoda
Aug 24 2015 08:36
@Sebbba да
Seba
@Siebov
Aug 24 2015 08:36
@jhaoda спасибо
stranger-ru
@stranger-ru
Aug 24 2015 09:01
Всем привет.
Ребят, поделитесь опытом, кто как делает админки, кроме как через Sleeping-Owl и руками через генерацию HTML. Может есть какие-то еще интересные штуки (вроде виджетов) для формирования таблиц (с сортировками, фильтрами) и форм т.д?
Oleg
@Malezha
Aug 24 2015 09:02
@stranger-ru Datatable
stranger-ru
@stranger-ru
Aug 24 2015 09:05
@Malezha спасибо. А фильтры столбцов там есть?
Oleg
@Malezha
Aug 24 2015 09:07
Кажется только через поиск
stranger-ru
@stranger-ru
Aug 24 2015 09:07
вижу там есть ->searchColumns('name') но интересно это будет фильтр по столбцу?
Oleg
@Malezha
Aug 24 2015 09:08
Нет, это типа указание, что поиск будет производиться по этому столбцу.
    public function getDatatable()
    {
        return Datatable::collection(User::all(array('id','name')))
        ->showColumns('id', 'name')
        ->searchColumns('name')
        ->orderColumns('id','name')
        ->make();
    }
А данном примере будет показано только два столбца, но поиск будет только имени.
Screamster
@Screamster
Aug 24 2015 09:09
Ребят, подскажите, а то что-то уже туплю. Как для русской локали сделать чтобы ссылки были mysite.dev/page, а для английской mysite.dev/en/page, кто-то делал так?
stranger-ru
@stranger-ru
Aug 24 2015 09:09
@Malezha понятно, жаль.
насколько понимаю, на сегодняшний день Sleeping-Owl это самая крутая вещь для быстрой генерации админок в laravel?
Oleg
@Malezha
Aug 24 2015 09:10
В плане функционала из коробки - да.
stranger-ru
@stranger-ru
Aug 24 2015 09:10
@Malezha ок, спасибо.
Oleg
@Malezha
Aug 24 2015 09:20
@Screamster если прям так, то две группы.
Andrey Baksalyar
@Baksalyar
Aug 24 2015 09:32
Приветствую, господа! Подскажите пожалуйста по связям Элокента...
В общем, имеется общий объект, содержащий общие свойства для всех подкатегорий (например, «описание» и «картинка»), и есть несколько категорий, уточняющих уникальными для каждой категории свойствами основной объект.
Я привязал записи в таблицах подкатегорий к основному объекту, но теперь не пойму, как получить запись из подкатегории, обратившись к какому-то методу модели основного объекта.
Грубо говоря, у меня есть список предприятий, основной объект «предприятие» содержит телефон, адрес и фотографию здания предприятия. А уточняющие модели — скажем, «школа», записи в таблице которой привязаны к соответствующим записям в «предприятиях», содержит свои уникальные свойства, типа там количества учеников и т.д. Так вот, как получить запись из категории «школа», зная только id предприятия?
Oleg
@Malezha
Aug 24 2015 09:34
@klermonte принимай пул реквест в SmartCrowd/centrifuge-broadcaster.
Screamster
@Screamster
Aug 24 2015 09:35
This message was deleted
что-то никак не научюсь этим маркдауном пользоваться
Oleg
@Malezha
Aug 24 2015 09:36
@Baksalyar http://laravel.com/docs/5.1/eloquent-relationships#polymorphic-relations если я верно понял задачу.
Andrey Baksalyar
@Baksalyar
Aug 24 2015 09:37
Уточню, что связь жестко только одна 1 предприятие → 1 школа, или там 1 предприятие → 1 столовая и т.д. Каждая запись из подкатегорий относится к одной записи из таблицы предприятий.
Screamster
@Screamster
Aug 24 2015 09:37

@Malezha

$locale = Request::segment(1);

if (in_array($locale, Config::get('app.locales')))
{
    \App::setLocale($locale);
}
else
{
    $locale = null;
}


Route::group(['prefix' => $locale], function() {
    Route::get('/', function () {
        return view('hello');
    });

    Route::get('test', function () {
        return view('test');
    });
});

вот так в route.php сделал, работает как надо, но не нравится, что всё в этом файле. :( А как вынести в мидлварю и при этом потом результат подставить в префикс роута не знаю :)

Oleg
@Malezha
Aug 24 2015 09:39
@Screamster навешать на группу мидельварь, сохранять данные в самом запросе.
Screamster
@Screamster
Aug 24 2015 09:41
@Malezha "сохранять данные в самом запросе.", а можно пример, если не трудно, а то не понимаю чуток :(
Oleg
@Malezha
Aug 24 2015 09:43
@Baksalyar ну и в чем проблема? Предприятие будет иметь связь MorphTo, каждая из доступных уточняющих моделей связь MorphOne
Andrey Baksalyar
@Baksalyar
Aug 24 2015 09:45
@Malezha, спасибо, буду читать/пробовать!
Oleg
@Malezha
Aug 24 2015 09:45
@Screamster можно сохранить в сессию через $request->session()->flash()
Andrey Baksalyar
@Baksalyar
Aug 24 2015 09:45
@Asvae, видимо, здесь немного другое, нежели один-к-одному
Screamster
@Screamster
Aug 24 2015 09:47
@Malezha сейчас попробуем :)
Qweqwe1234
@Qweqwe1234
Aug 24 2015 09:50
Ребят, вопрос из разряда верстки: есть ли принципиальная разница между использованием блоков с float и инлайновых блоков?
Andrey Baksalyar
@Baksalyar
Aug 24 2015 09:52
asvae
@asvae
Aug 24 2015 09:53
@Baksalyar ну да. Если будешь генерить полиморфную таблицу через $table->morphs, знай, что он не пихает unsigned в foreign key.
JhaoDa
@jhaoda
Aug 24 2015 09:55
@Asvae почему?
Qweqwe1234
@Qweqwe1234
Aug 24 2015 09:57
@Baksalyar часть уже читал отсюда и вопросы появились, есть ли смысл использовать float если инлайновые блоки решают подобные проблемы и предоставляют больше функционала
вернее, есть ли те области в которых следует применять блоки с float вместо inline блоков?
Screamster
@Screamster
Aug 24 2015 10:07

@Malezha

// routes.php
Route::group(['prefix' => session('locale'), 'middleware' => 'language'], function() {
    Route::get('/', function () {
        return view('hello');
    });

    Route::get('test', function () {
        return view('test');
    });
});

// middleware
    public function handle($request, Closure $next)
    {
        $locale = $request->segment(1);

        if (in_array($locale, \Config::get('app.locales')))
        {
            \App::setLocale($locale);
        }
        else
        {
            $locale = null;
        }

        $request->session()->flash('locale', $locale);

        return $next($request);
    }

получаю NotFoundHttpException in RouteCollection.php line 143. Где я опять косячу?

я так понимаю, в сессии ее еще нет, а я пытаюсь ее подставить в префикс?
пробовал обернуть в 2 группы, сначала мидлваря, потом внутри с префиксом и подставить сессию, но та же бяда
asvae
@asvae
Aug 24 2015 10:16
@jhaoda пардон, не то вспомнил. Это из-за индексации их применить не удалось.
censoredgit
@censoredgit
Aug 24 2015 10:45
@stranger-ru http://packalyst.com/packages/package/nayjest/grids demo http://grids-demo.herokuapp.com/demo/example4 ps я еще не пользовался этим пакетом
Paul Klementyev
@klermonte
Aug 24 2015 10:46
@Melezha а какие доп параметры ты бы хотел передавать в конекшн?
projct1
@projct1
Aug 24 2015 11:00
как можно получить цифровой индекс внутри шаблона, который фетчится через @each ?
Paul Klementyev
@klermonte
Aug 24 2015 11:04
@Melezha а все вижу, окей приму, спасибо за участие)
Oleg
@Malezha
Aug 24 2015 11:24
@klermonte хотя бы тот же параметр с урлом для приватных каналов.
stranger-ru
@stranger-ru
Aug 24 2015 11:26
@censoredgit спасибо, тоже классная штука!
А сам на чем делаешь админки для сайтов, которые разрабатываешь?
Andrey Baksalyar
@Baksalyar
Aug 24 2015 11:30
А есть ли способ упростить работу с формами? Чтобы избежать всей этой рутины с привязыванием к базе, валидациями, etc, etc...
JhaoDa
@jhaoda
Aug 24 2015 11:30
Куда уж проще-то?
projct1
@projct1
Aug 24 2015 11:32
почему когда ставлю такой код, при image_id === null автоматом value становится как и название?
{!! Form::radio('image_id', $image->product->image_id) !!} Главная картинка
<input type="radio" value="image_id" name="image_id">
что за хрень такая?
censoredgit
@censoredgit
Aug 24 2015 11:38
@stranger-ru на ларе сам делал. В yii2 виджетами. Возможно для лары свой gridview сделаю )
stranger-ru
@stranger-ru
Aug 24 2015 11:41

@censoredgit понятно

Возможно для лары свой gridview сделаю )

хорошая идея.

Maxim
@Big-Shark
Aug 24 2015 12:26
https://github.com/briannesbitt/Carbon/blob/master/src/Carbon/Carbon.php#L485 Я чтото не понимаю в программировании, или зачем это?
@censoredgit нет, только не это.
censoredgit
@censoredgit
Aug 24 2015 12:33
@Big-Shark ты о чем?
Maxim
@Big-Shark
Aug 24 2015 12:35
@censoredgit "Возможно для лары свой gridview сделаю )" Мне просто удалось поработать с gridview в юии1)
censoredgit
@censoredgit
Aug 24 2015 12:37
@Big-Shark мы про yii2 ) там с этими виджетами все кул)
Maxim
@Big-Shark
Aug 24 2015 12:38
@censoredgit Ты просто еще не понял что yii2, виджеты, и кул не могут быть в одном предложении друг с другом)
@censoredgit только что почитал доку по гриду, как было гавно, так и осталось
<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        'id',
        'name',
        'created_at:datetime',
        // ...
    ],
]) ?>
Это же полный писец
censoredgit
@censoredgit
Aug 24 2015 12:46
@Big-Shark что тут не так?
<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        'id',
        [
'attribute' => 'name',
'value' => function(...){},
'format' => ,
etc
],
        'created_at:datetime',
        // ...
    ],
]) ?>
Maxim
@Big-Shark
Aug 24 2015 12:48
@censoredgit начнем с магии типа created_at:datetime, с массива глубиной в 2 уровня, для установки параметров, с кучей ключей которые узнать можно только в доке, с ошибок которые ты хрен найдешь, и прочего, массивы для передачи аргументов в таком виде могут использовать только слабоумные.
@censoredgit посмотри как у совы описываются колонки, все на методах, все на ооп нормальном
@censoredgit знаешь как прикольно когда у тебя массив туда передается строк на 30, который ты весь поменял, и в одном месте поставил случайно за местро строки массив с строкой и у тебя вылетает ошибка в ядре юии что они ожидали строчку, а получили массив, и все это указывает на хрен пойми какое место, и все что ты можешь добится от дебагера это узнать что ошибка гдето в этом массиве
asvae
@asvae
Aug 24 2015 12:52

@rorc

Form::radio('image_id', $image->product->image_id)

null в формах — работает аналогично пропущенному значению.
Например, если нужны только опции:
Form::radio('image_id', null,null,['class'=>'class-name'])

Vlad Shcherbin
@VladShcherbin
Aug 24 2015 12:52
@Big-Shark забей, у большинства людей на yii что-то не так с головой, сколько раз в этом убеждался
Maxim
@Big-Shark
Aug 24 2015 12:52
@VladShcherbin я сижу в чате юии, и я тебе скажу так, там процентов 90 вообще с головой не дружат
@VladShcherbin и те парни на которых мы тут ругаемся за то что они доку нечитают, это просто гении по сравнению с теми кто там
Vlad Shcherbin
@VladShcherbin
Aug 24 2015 12:53
@Big-Shark да я и не сомневаюсь, как ты вообще туда попал)
Maxim
@Big-Shark
Aug 24 2015 12:54
@VladShcherbin @SerafimArts позвал потролить их, вот так и сижу там, смотрю на слабоумных
Vlad Shcherbin
@VladShcherbin
Aug 24 2015 12:55
аа, окей. главное к нам их не тащите)
censoredgit
@censoredgit
Aug 24 2015 12:55
@Big-Shark посмотри как у совы пока не смотрел его админку. Кстати в yii2 trace ошибок офигительный) сразу видно на какой строке проблема. начнем с магии типа created_at:datetime, с массива глубиной в 2 уровня, для установки параметров, с кучей ключей которые узнать можно только в доке для новичка это ад) помню себя когда с первым yii пытался разобраться)
Maxim
@Big-Shark
Aug 24 2015 12:55
@VladShcherbin нее, я еще в здравом уме)
Vlad Shcherbin
@VladShcherbin
Aug 24 2015 12:55
@Big-Shark да я уже видел предводителя их пару дней назад здесь)
Maxim
@Big-Shark
Aug 24 2015 12:56
@censoredgit это ад для любого вменяемого человека) они научились парсить массивы и выдавать адекватно в каком ключе ты ошибся и что туда надо писать?
Vlad Shcherbin
@VladShcherbin
Aug 24 2015 12:56
мало ему хабры, так и сюда добрался уже. хоть молчит, слава богу)
Maxim
@Big-Shark
Aug 24 2015 12:58
@VladShcherbin да их сюда понабежало после того как мы туда пришли, начали пытаться тут у нас флеймы устраивать
Vlad Shcherbin
@VladShcherbin
Aug 24 2015 12:59
@Big-Shark ага, я видел) решил помолчать пока свалят чтобы не создавать холивары)
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 13:03
я там неделю всего
но отличия в атмосфере чатика разительные
Maxim
@Big-Shark
Aug 24 2015 13:03
@censoredgit https://gist.github.com/Big-Shark/9051af654ddd5fa3364e Небольшая статья от меня про массивы
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 13:04
тут 99% айти и 1% всякие плюшки весёлые, конкурсы, ссылки на видюшки интересные
Maxim
@Big-Shark
Aug 24 2015 13:04
Но чукча не писатель, чукча читатель )))
@SerafimArts там процентов 90 это просто флуд, причем достаточно тупой, и вообще далекий от темы
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 13:05
там 40% разглагольствования на тему побухать и "баб", 20% айти, остальное тупо флуд
romach3
@romach3
Aug 24 2015 13:07
с другой стороны, там не ворчат на тему "сам дурак, читай доки" ))
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 13:08
угу
там просто нету @jhaoda :D
а у Yii нет нормальных доков
romach3
@romach3
Aug 24 2015 13:09
@jhaoda решил бы эту проблему: сам написал доки, что бы можно было тыкать в них и ворчать )
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 13:10
:DDDD
точно
:D
NelinD
@NelinD
Aug 24 2015 13:10
@SerafimArts их спасет @АВТОjhaoda
Maxim
@Big-Shark
Aug 24 2015 13:11
@romach3 там все просто, иди читай апи, ибо доков нет) А в апи ничего непонятно, но это всем пофиг
romach3
@romach3
Aug 24 2015 13:17
yii вообще странный, я пытался, но не осилил логику авторов. yii2 стал чуть лучше, но имхо они с ним поторопились. Надо было дальше пилить его. Часть грузится композером, часть сама по себе, неймспейсы то с большой буквы, то нет, обилие массивов, что резко снижает возможность глянуть в код и понять что происходит и т.д. Ларка тем и приглянулась, смотришь в её код, там везде комментарии, все по методам разбито, можно понять что там, даже не заглядывая в док.
Maxim
@Big-Shark
Aug 24 2015 13:18
@romach3 да в ларке можно просмто список методов смотреть, и понимать что тебе надо, както интуитивно, в юии эти массивы всегда и везде
Вот как узнать что тут к чему, и какие параметры еще есть
    function behaviors()
    {
        return [
            [
                'class' => UploadBehavior::className(),
                'attribute' => 'file',
                'scenarios' => ['insert', 'update'],
                'path' => '@webroot/upload/docs/{category.id}',
                'url' => '@web/upload/docs/{category.id}',
            ],
        ];
    }
romach3
@romach3
Aug 24 2015 13:19
Ни как. Это по сути блэкбокс )
Но они пытаются, судя по чатику ) Behaviors вроде как отменяют в пользу event`ов. Возможно в 3 версии все станет логично, правда совместимость это убьет полностью.
Maxim
@Big-Shark
Aug 24 2015 13:22
@romach3 вроде даже в 2.1 есть мысли убрать бихевир и использовать трейты
@romach3 нопроблемма не только в трейтах, а в массивах всегда и везде)
romach3
@romach3
Aug 24 2015 13:27
Потому и блэкбокс. Ты просто делаешь то что тебе сказали и возможности посмотреть под капот нету. В теории конечно код открыт, но блин, попробуй найти обработчик этих бехавиоров и понять что там на каком этапе происходит .
На самом деле это довольно странное занятие - рассуждать о недостатках yii в чате ларки, они тут и так всем должны быть понятны ))
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:29
))
Maxim
@Big-Shark
Aug 24 2015 13:31
@romach3 ну может быть тут кто-то по принуждению)
censoredgit
@censoredgit
Aug 24 2015 13:32

@Big-Shark

function behaviors()
    {
        return [
            [
                'class' => UploadBehavior::className(),
                'attribute' => 'file',
                'scenarios' => ['insert', 'update'],
                'path' => '@webroot/upload/docs/{category.id}',
                'url' => '@web/upload/docs/{category.id}',
            ],
        ];
    }

ctrl+лкм по классу UploadBehavior и смотреть на его public property)

Maxim
@Big-Shark
Aug 24 2015 13:33
@censoredgit ага, он он наследован от еще одного бехевиора, а тот еще от одного, и писец)
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:34
@censoredgit совсем не юзерфрендли)
Maxim
@Big-Shark
Aug 24 2015 13:34
Вопрос к ларе не относится, но как решить, есть куча чекбоксов, и при нажатии на чекбокс мы должны пересчитывать стоймость, кто как делает так чтобы человек мог быстра кликать по чекбоксам, и не ловить глюков с тем что первый запрос может выполнится последним ?
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:34
автокомплита нет, а это очень печалит
censoredgit
@censoredgit
Aug 24 2015 13:34
@Big-Shark таких поведений не встречал)
@vanchelo есть такое)
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:35
шарк, у тебя сервер считает?
censoredgit
@censoredgit
Aug 24 2015 13:35
@vanchelo с автокомплитом в yii2 получше будет чем в ларе) пхпшторм отлично понимает все
Maxim
@Big-Shark
Aug 24 2015 13:35
@vanchelo ну да, нефиг клиенту считать)
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:36
@censoredgit он и ключи массивов понимает?
Maxim
@Big-Shark
Aug 24 2015 13:36
@censoredgit и как шторм подсказывает ключи в таком массиве?
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:36
шарк, а если промисы юзать?
censoredgit
@censoredgit
Aug 24 2015 13:36
я не про массив писал)
Maxim
@Big-Shark
Aug 24 2015 13:36
@vanchelo он все понимает, и вложение до 5 уровней в массивах тоже)
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:36
пример то ты с массивом привел
Screamster
@Screamster
Aug 24 2015 13:36
ребят, а удалять пакеты - это просто убрать из composer.json и composer update сделать? или оно останется еще где-то?
Maxim
@Big-Shark
Aug 24 2015 13:36
@censoredgit так в юии все на массивах)
@Screamster ну если он копирвоал свои вью, конфиги и тд, то они останутся, также сервис провайдер ручками из конфига удалять надо
@vanchelo нука давай по подробней, что такое эти ваши промисы?
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:38
это обещания
только после того как что-то произойдет ты что-то делаешь
Maxim
@Big-Shark
Aug 24 2015 13:38
@vanchelo js столько раз обещял что станет нормальным языком, но у него так и не получилось)
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:38
в твоем случае это запрос когда прийдет
Screamster
@Screamster
Aug 24 2015 13:38
@Big-Shark пакеты свои вьюхи где хранят? :)
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:38
где попало)
Maxim
@Big-Shark
Aug 24 2015 13:38
@Screamster но обычно в папке вью
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:39
есть библиотека async для js
Maxim
@Big-Shark
Aug 24 2015 13:39
@vanchelo так в том и прикол что зарпосы могут выполнятся разное время, и предпоследний запрос вернется после того как выполнится последний
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:40
ну и пусть, пересчитается всё когда последний запрос выполнится
вообще может лучше клиент пусть считает?
Maxim
@Big-Shark
Aug 24 2015 13:41
@vanchelo так нет, смотри запросы шлются так 1,2,3 а выполняются и уже в таком порядке 1,3,2 и в данном случае последним выполнялися 2 запрос, и перетер результаты 3
@vanchelo там много логики, и ее придется дублировать
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:41
сбрасывать может тогда предыдущие запросы?
Vlad Shcherbin
@VladShcherbin
Aug 24 2015 13:42
@Big-Shark сделай колесико и невозможность тыкать пока ответ запроса не вернется
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:42
тоже вариант
дизайблить чекбоксы
Роман Сохарев
@greabock
Aug 24 2015 13:42
@VladShcherbin отруби людям ноги, чтобы они не промочили их, когда в лужу наступят XD
Vlad Shcherbin
@VladShcherbin
Aug 24 2015 13:43
ага))
Maxim
@Big-Shark
Aug 24 2015 13:43
@VladShcherbin колесико не вариант, сделать заморозку конечно можно, но не очень хочется, какойто это древний метод)
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:43
грибок радикальное решение предложил)
NelinD
@NelinD
Aug 24 2015 13:44
@Big-Shark заведи счетчик запросов)
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:44
или стэк)
Maxim
@Big-Shark
Aug 24 2015 13:44
@NelinD и как это будет работать?
Vlad Shcherbin
@VladShcherbin
Aug 24 2015 13:44
я везде колёсико вижу пока не отработает, вроде всем нормально)
NelinD
@NelinD
Aug 24 2015 13:44
@Big-Shark все кроме последнего идут лесом)
Maxim
@Big-Shark
Aug 24 2015 13:44
@vanchelo и как сбрасывать старый запрос?
censoredgit
@censoredgit
Aug 24 2015 13:44
@Big-Shark можно использовать очереди https://github.com/caolan/async#queue
NelinD
@NelinD
Aug 24 2015 13:44
@Big-Shark не обрабатывать меньше последнего)
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:45
сделай задержку в несколько милисек
NelinD
@NelinD
Aug 24 2015 13:45
@Big-Shark найдешь что лучше скажи
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:45
после клика по чекбоксу
перед отправкой запроса
Maxim
@Big-Shark
Aug 24 2015 13:45
@NelinD ну это идея, надо подумать как реализовать еще, чтоб не слать ненужные данные
@vanchelo да, думал сделать небольшую задержку.
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:46
а чем ты запросы шлешь?
Maxim
@Big-Shark
Aug 24 2015 13:46
@VladShcherbin ну раньше слал Jquery ajax, а сейчас пока ничем)
Роман Сохарев
@greabock
Aug 24 2015 13:47
@Big-Shark @NelinD правильно говорит. Счетчик + debounce норм будет смотрется
NelinD
@NelinD
Aug 24 2015 13:48
@vanchelo толкаешь на кучу)
Maxim
@Big-Shark
Aug 24 2015 13:48
@greabock debounce это что?
Роман Сохарев
@greabock
Aug 24 2015 13:48
ну это такая "защита" от злоупотребления тыканьем =))
censoredgit
@censoredgit
Aug 24 2015 13:49
@Big-Shark очереди разве не подходят?
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:49
@censoredgit по мне так очереди норм, библиотека хорошая
Maxim
@Big-Shark
Aug 24 2015 13:49
@censoredgit вроде подходят, но насколько я понимаю я должен для этого держать отдельную либу
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:50
заюзаешь её где-нить еще)
Maxim
@Big-Shark
Aug 24 2015 13:50
@censoredgit я пока собираю решени, потом уже буду выбирать
Soprun Vladislav
@vlsoprun
Aug 24 2015 13:50
@greabock Здорова, подскажи новые стримы будут?
Роман Сохарев
@greabock
Aug 24 2015 13:50
ага, как комп починю, если починю...
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:51
что случилось?
censoredgit
@censoredgit
Aug 24 2015 13:51
@Big-Shark да,но там много всего и она весит 37кб)
Maxim
@Big-Shark
Aug 24 2015 13:51
да нафиг тебе комп, стримь с телефона
Роман Сохарев
@greabock
Aug 24 2015 13:51
@vanchelo матплата сдохла
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:51
беда
Soprun Vladislav
@vlsoprun
Aug 24 2015 13:51
:worried:
Brezhnev Ivan
@vanchelo
Aug 24 2015 13:52
webpack юзаете?
Maxim
@Big-Shark
Aug 24 2015 13:52
@greabock наверное слишком много стримил
@greabock ты уже заказал новую?
Роман Сохарев
@greabock
Aug 24 2015 13:53
нету такой
а если на новую менять, то только с камнем
а у меня чет на новый i5 бабла нет сейчас
сдал матплату в ремонт и скрестил пальцы
Maxim
@Big-Shark
Aug 24 2015 13:55
@greabock писец, у меня так разьем подгорел, мамку брал примерное за 15к, прошло 2 или 3 года, цена в магазе мамки похуже 30к, а новую брать только м камнем и оперативой, там вообще за 70к все переваливало, решил почистить разьем и воткнуть на свой страх и риск, до сих пор работает
Роман Сохарев
@greabock
Aug 24 2015 13:56
@Big-Shark тебе повезло
Maxim
@Big-Shark
Aug 24 2015 13:56
@greabock угу, хорошо еще камень не поджарился, он вообще космос с этим курсом стоит
Роман Сохарев
@greabock
Aug 24 2015 13:59
а тебя-то с чего должен курс беспокоить? Я думал ты с Объединенным Пиндостаном сотрудничаешь =)
Maxim
@Big-Shark
Aug 24 2015 14:00
@greabock ну у меня зп в баксах, а у жены в тугриках (Пока еще в тугриках)
Maxim
@Big-Shark
Aug 24 2015 14:14
Повисло неловкое молчание.
Brezhnev Ivan
@vanchelo
Aug 24 2015 14:17
)
завидуют молча)
Ivan Klimchuk
@Alroniks
Aug 24 2015 14:33
ага )
в РБ евро 20k пробил
Maxim
@Big-Shark
Aug 24 2015 14:35
@Alroniks чего?
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 14:35
ловите наркомана!
Ivan Klimchuk
@Alroniks
Aug 24 2015 14:36
пруф )
Stanislav Mihailov
@samikhajlov
Aug 24 2015 14:57
Всем привет.
Подскажите, как мне правильно запросить mimeType вот отсюда?
UploadedFile {#29
-test: false
-originalName: "open2.csv"
-mimeType: "application/vnd.ms-excel"
-size: 147
-error: 0
}
This message was deleted
This message was deleted
Роман Сохарев
@greabock
Aug 24 2015 14:59

тем временем в параллельной вселенной "Республика Беларусь" банки ломают стереотипы...

банк покупает 20 450
банк продает 20 430

Stanislav Mihailov
@samikhajlov
Aug 24 2015 15:01
This message was deleted
This message was deleted
Роман Сохарев
@greabock
Aug 24 2015 15:02
@samikhajlov может ты уже прекратишь конвульсии, и скажешь что-то членораздельное?
Victor Golovko
@siptik
Aug 24 2015 15:02
Все печально друзья... Сейчас народ обнищает и начнет много пить. Поэтому кидаем все и открываем пункт приема стеклотары :smile:
Stanislav Mihailov
@samikhajlov
Aug 24 2015 15:02
Подскажите, как мне правильно запросить mimeType вот отсюда?
UploadedFile {#29 ▼ -test: false -originalName: "open2.csv" -mimeType: "application/vnd.ms-excel" -size: 147 -error: 0 }
Роман Сохарев
@greabock
Aug 24 2015 15:04
@samikhajlov getMimeType?
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:06
@samikhajlov никак
его можно получить только у сохранённого файла
$file->move('path/to', 'name')->getMimeType()
Stanislav Mihailov
@samikhajlov
Aug 24 2015 15:09
сохранять файл не вариант, совсем, мусорка будет на сервере за считанные дни :(
буду искать другие способы, спасибо
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:10
нет других способов
у пыха в 99% случаях нет доступа к темповой директории
кроме как на перемещение файла
Роман Сохарев
@greabock
Aug 24 2015 15:10
@SerafimArts если гора не идет к Магомеду... =))
Stanislav Mihailov
@samikhajlov
Aug 24 2015 15:12
а имя файла же можно выдернуть? или тоже нет?
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:12
можно
Stanislav Mihailov
@samikhajlov
Aug 24 2015 15:12
буду определять тип файла по расширению регулярками
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:12
оно выглядит примерно как "phpTemp_32Hs7dh"
Stanislav Mihailov
@samikhajlov
Aug 24 2015 15:12
да емае :)
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:13
да, можно получить исходное имя
т.е. не реальное, а загружаемое
Maxim
@Big-Shark
Aug 24 2015 15:14
@SerafimArts дорогой друг, а вы уверены в своих ответах?
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:14
да
Stanislav Mihailov
@samikhajlov
Aug 24 2015 15:14
того имени, что указывает пользователь при загрузке будет достаточно, дальше я try catch все исключения перехвачу и обработаю
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:14
тогда ->getClientOriginalName()
но учти, что расширение не есть гарантия безопасности
Maxim
@Big-Shark
Aug 24 2015 15:15
@SerafimArts UploadedFile {#29 ▼ -test: false -originalName: "open2.csv" -mimeType: "application/vnd.ms-excel" -size: 147 -error: 0 } Вот тут уже есть майм тайп, в виде переменной, так что я думаю его както можно получить и до перемещения.
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:15
@Big-Shark позавчера столкнулся с этой проблемой
нельзя
точнее мб и можно
Maxim
@Big-Shark
Aug 24 2015 15:16
@SerafimArts эта протектед переменная к которой нет доступа?
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:16
но оно пытается получить доступ к темповому файлу на чтение
и грохается
в теории можешь посмотреть субботние логи мои
ночные
Maxim
@Big-Shark
Aug 24 2015 15:16
@SerafimArts дык если оно в переменной уже, нафига оно пытается получить доступ
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:16
я подробно описал эту проблему
@Big-Shark наверное потому, что оно не надеется на исходный тип
Maxim
@Big-Shark
Aug 24 2015 15:17
@SerafimArts у меня инет тут тупит сейчас, даже не все сообщения отправляются, так что логи точно глянуть не смогу
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:17
смотри
есть: ->getClientMimeType()
тот, который был передан
но он не надёжен ни разу
Stanislav Mihailov
@samikhajlov
Aug 24 2015 15:17
@SerafimArts сработало, спасибо! дальше определю тип файла на основе регулярных выражений и разберу для загрузки в БД массива. Вроде бы должно быть всё ок.
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:17
есть ->getMimeType()
это реальный mime, но он требует прав на чтение
JhaoDa
@jhaoda
Aug 24 2015 15:18
@SerafimArts это реальный mime по мнению сервера
Но это не есть истинный mime
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:18
ориентироваться на ->getClientMimeType() конечно же можно, но это возможная дырка
@jhaoda ну да
просто серверный детект надёжнее всё равно
Maxim
@Big-Shark
Aug 24 2015 15:19
Ну смотри, проверили один, если там все норм, переместили, проверили еще раз) Профит)
JhaoDa
@jhaoda
Aug 24 2015 15:19
Сервер может не знать mime переданного файла, а клиент может
Равно как и наоборот
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:19
и что, теперь надо надеятся на клиентский? =)
Maxim
@Big-Shark
Aug 24 2015 15:20
надеятся на бога
Роман Сохарев
@greabock
Aug 24 2015 15:20
@SerafimArts есть инфа, что getMimeType() тоже "ненадёжен" =))
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:20
не рушьте мой розовый мир
Maxim
@Big-Shark
Aug 24 2015 15:21
Но для начальной идентификации и понимания что дальше делать, я думаю клиент маймтайпа хватит
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:21
отлично, буду передавать php скриптики с типом картинок
=)
раньше кстати так форумы ломались
JhaoDa
@jhaoda
Aug 24 2015 15:22
Ну передавай, и что?
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:22
в браузерах по-моему эту дыру до сих пор не исправили
Роман Сохарев
@greabock
Aug 24 2015 15:22
@SerafimArts например при попытке, получить майм .css файла от тебе глядя в глаза отчеканит : text/plain
даже не покраснев
JhaoDa
@jhaoda
Aug 24 2015 15:23
@SerafimArts согласись, что если скрипт выполнится, то вопрос не к методу загрузки и идентификации, а к админу, который не закрыл исполнение скриптов в папке с аплоадами?
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:23
главное получить права на исполнение
а дальше только в путь
JhaoDa
@jhaoda
Aug 24 2015 15:23
Конечно, для шаредов всё печально...
Maxim
@Big-Shark
Aug 24 2015 15:24
@greabock так это же и есть тест)
@SerafimArts так дальше ты уже можешь другими средствами проверить майм тайп
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:24
ой всё, яж хотел как проще
а вы тут развели нейронную сеть
по определению типа
хммм
а ведь хорошая идея
надо бы запилить либу
Роман Сохарев
@greabock
Aug 24 2015 15:25
@Big-Shark ага, только вот если ты отдашь браузеру css с загололвком Content-Type: text/plain, то он тебя смело пошлет подальше
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:26
можно отдать браузеру картинку с заголовком просьбы авторизоваться
а эту картинку вставлять на всякие древние форумы, которые не запрещают внешних ссылок
в результате картинка инжектится, хедер врубает в браузере окошко формы логина\пароля и вуаля, тырилка персональных данных
так что по-мне никогда не стоит доверять клиенту
Роман Сохарев
@greabock
Aug 24 2015 15:28
@SerafimArts да ты лютый хацкер XD
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:29
даже в определении типа, лучше уж определить как октет стрим или бинарник, нежели довериться этому созданию дьявола - браузеру
Роман Сохарев
@greabock
Aug 24 2015 15:29
свят, свят, свят! Не говори слово на букву Б
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:30
Брррроооооузээээррррррр
!
projct1
@projct1
Aug 24 2015 15:37
чуваки, есть какие-нибудь встроенные средства отловки дубликатов? если пытаюсь проапдейтить данные, а уже запись существует такая?
Ща делаю так, просто заглушку ставлю
            try {
                if ($image->update(['alias' => $new, 'description' => $this->request->input('gallery.description.' . $image->id)])) {
                    ProcessGallery::renameFileName($model->id, $old, $new);
                }
            } catch (QueryException $e) {

            }
Роман Сохарев
@greabock
Aug 24 2015 15:39
updateOrCreate
firstOrCreate
JhaoDa
@jhaoda
Aug 24 2015 15:40
Я ваще не понял, что ему надо
«если пытаюсь проапдейтить данные, а уже запись существует такая?» это как понимать?
Роман Сохарев
@greabock
Aug 24 2015 15:40
я тоже, просто выдал пару слов рандомных - вдруг помогут XD
projct1
@projct1
Aug 24 2015 15:40
@jhaoda уникальный индекс есть по двум полям, для каждого товара может быть уникальное название фотки
@rorc @greabock если пытаюсь проапдейтить записи с уже существующими именами для этого товара, то ошибка базы выскакивает
@jhaoda чтобы продолжить выполнение просто трай кетчем отловил исключение чтобы работа скрипта не прервалась и всё
Rs-dev
@Rs-developer
Aug 24 2015 15:43
какие хорошие приятные темы для сублайма есть?
JhaoDa
@jhaoda
Aug 24 2015 15:43
@rorc и каких же тебе надо «встроенных» средств?
Это ошибка из базы, что тут ларавель может сделать?
projct1
@projct1
Aug 24 2015 15:44
@jhaoda ну например что-нибудь типа if exists
Victor Golovko
@siptik
Aug 24 2015 15:44
@rorc если вы обновляете, то сначала проверьте изменилось ли имя. Если имя изменилось, то проапдейтить это имя, если нет, то нет
JhaoDa
@jhaoda
Aug 24 2015 15:44
@rorc что мешает самому проверить, нет ли в базе такой записи?
@Rodinsergey здесь не любят sublime
projct1
@projct1
Aug 24 2015 15:45
@jhaoda как это сделать через модель? не сырым селектом же?
JhaoDa
@jhaoda
Aug 24 2015 15:45
@rorc а как вообще выборка с условиями делается?
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 15:46
@jhaoda саблайм норм редактор для совсем зелёных, не надо тут =)
этож не убогий нотпад
Victor Golovko
@siptik
Aug 24 2015 15:47
Народ, есть такой вопрос на засыпку. Клиент (США) хочет сделать сайт-посредник между продавцом услуг и клиентом. Суть такова, что человек (тренер по сноуборду) предоставляет услугу и выставляет свое предложение на сайте, например 100$/ час. Клиент (кто хочет покататься ) платит например 100$ сервису, а сервис берет комиссию 20$ и перечисляет продавцу 80$.
Может кто делал похожее, как это правильно реализовывается? Само собой это все должно быть автоматически
Rs-dev
@Rs-developer
Aug 24 2015 15:48
все любят phpstorm?)
JhaoDa
@jhaoda
Aug 24 2015 15:48
@Rodinsergey ага
@siptik и какого ответа ты ждешь? ТЗ написать за тебя?
Я делал похожее. И если будет конкретный вопрос, очень может быть, что я отвечу.
Alexey
@Butochnikov
Aug 24 2015 15:53
@greabock когда стрим?
Victor Golovko
@siptik
Aug 24 2015 15:55
@jhaoda Суть такова, что я сегодня получил такой запрос от чувака из США. Я не понимаю каким образом удерживается комиссия. Клиент платит на счет владельца сайта->банк возращает данные, что человек оплатил требуемую сумму->сайт автоматически проводит платеж на счет тренера. Так это работает? Или есть какая то другая схема?
JhaoDa
@jhaoda
Aug 24 2015 15:58
@siptik мы делали так: клиент платит сервису, тот откусывает свою комиссию и зачисляет на счёт тренера некие фантики (в РФ нельзя живыми деньгами оперировать, слишком много бумаг надо). При накоплении некоторой пороговой суммы, тренер делает в ЛК заявку на получение денег.
Роман Сохарев
@greabock
Aug 24 2015 15:59
@Butochnikov у меня железо накрылось
Alexey
@Butochnikov
Aug 24 2015 15:59
@greabock :worried:
projct1
@projct1
Aug 24 2015 16:00
вот, сделал так) может по короче можно?
        foreach ($model->gallery as $image) {
            $old = $image->alias;
            $new = ProcessGallery::prepareFileName($this->request->input('gallery.alias.' . $image->id));
            $update = ['description' => $this->request->input('gallery.description.' . $image->id)];
            if ($new && $old != $new && $image->whereProductId($model->id)->whereAlias($new)->first() === null) {
                $update['alias'] = $new;
            }
            if ($image->update($update)) {
                if (isset($update['alias'])) {
                    ProcessGallery::renameFileName($model->id, $old, $new);
                }
            }
        }
Роман Сохарев
@greabock
Aug 24 2015 16:00
я сейчас на машине 2гб оперативы, древний атлон. Тут даже браузер лагает =(
Victor Golovko
@siptik
Aug 24 2015 16:06
@jhaoda Спасибо, тоже хорошая схема. Нужно спросить у клиента как он хочет сделать.
@jhaoda кажется я нашел то что нужно
Paul Klementyev
@klermonte
Aug 24 2015 16:17
Эмпирическим путем было установлено, что, открывая чат LaravelRUS, с вероятностью 67,261% мы увидим сообщение от @rorc
Yauheni
@muspelheim
Aug 24 2015 16:37
Ребята, привет, мигрирую проект с симфони 1 на ларавел, вроде все более менее запустилось и работает, но только в рамках 1 базы, есть проблема. Проблема заключается в том, что у меня в моделях пропела в некоторых методах используется сразу несколько баз, в симфони1 они костылем переключались используя разные коннекшены к базам, но сейчас я хотел сделать все правильно, в рамках одного коннекшена, может кто сталкивался с подобным, как в модели пропела можно изменить базу с которой эта модель работает? креды одинаковые для всех баз
Oleg
@Malezha
Aug 24 2015 16:55

@klermonte у тебя в пакете броадкастера, в сервис провайдере при создании редис броадкастера в качестве 3 параметра указывается проект.

return new CentrifugeRedisBroadcaster(
                    $connection,
                    $config['project'],
                    Arr::get($config, 'project', 'centrifuge')
                );

При этом в конструкторе

/**
     * Create a new broadcaster instance.
     *
     * @param ClientInterface $connection
     * @param string $project
     * @param string $server Can be centrifuge or centrifugo
     */
    public function __construct(ClientInterface $connection, $project = 'default', $server = 'centrifuge')

Ниже идет отправка броадкаста и там используется сервер

$this->connection->rpush($this->server . '.api', json_encode($centrifugeData));

Это так нужно или косяк?

Paul Klementyev
@klermonte
Aug 24 2015 16:58
@Malezha Да, конечно нужно server выбирать, спасибо)) на будущее, если че пиши в приват по этому пакету, а то че чат захломлять
Роман Сохарев
@greabock
Aug 24 2015 17:15
вызываю @Big-Shark , как спеца по пропеллеру, чтобы разобраться в вопросе
:point_up: 24 августа 2015 г., 23:37
alex
@eskrano
Aug 24 2015 17:21
Кто юзает IDE Atom ?
Brezhnev Ivan
@vanchelo
Aug 24 2015 17:21
??
блокнот?
alex
@eskrano
Aug 24 2015 17:21
Ну да .
Paul Klementyev
@klermonte
Aug 24 2015 17:21
@vanchelo не, веб иде от гитхаба
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 17:22
на кофескрипте!
мухахаха
Brezhnev Ivan
@vanchelo
Aug 24 2015 17:22
@klermonte это блокнот
alex
@eskrano
Aug 24 2015 17:22
он у меня лагает так что ужс:(
сублайм не лагает
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 17:22
чёрт
Paul Klementyev
@klermonte
Aug 24 2015 17:22
@vanchelo окай(
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 17:22
@eskrano атом на js
саблайм - натив + питон
Brezhnev Ivan
@vanchelo
Aug 24 2015 17:22
@klermonte вообще выше был сарказм на счет блокнота)
Paul Klementyev
@klermonte
Aug 24 2015 17:23
мой окай тоже несерьезен)
alex
@eskrano
Aug 24 2015 17:23
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 17:23
@eskrano и чо?
Brezhnev Ivan
@vanchelo
Aug 24 2015 17:23
))
alex
@eskrano
Aug 24 2015 17:23
@SerafimArts гглюкает он :(
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 17:23
к чему этот скрин, обьясните мне
alex
@eskrano
Aug 24 2015 17:23
4гб озу есть ...
Brezhnev Ivan
@vanchelo
Aug 24 2015 17:23
и мне
alex
@eskrano
Aug 24 2015 17:23
а секрет
Brezhnev Ivan
@vanchelo
Aug 24 2015 17:24
шпийон?
Seba
@Siebov
Aug 24 2015 17:37
всем привет.
не понимаю, где лежит класс, который надо подключить, для выполнения
$results = DB::select('select * from users where id = ?', [1]);
подскажите, плиз
Brezhnev Ivan
@vanchelo
Aug 24 2015 17:38
а что не выполняется?
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 17:38
@Sebbba нигде
ну т.е. лежит исходник, да
но не совсем его
Database\Builder назвается
Seba
@Siebov
Aug 24 2015 17:40
@SerafimArts т.е. в папке Database, должно лежать что-то с названием Builder ?
Paul Klementyev
@klermonte
Aug 24 2015 17:40
@Sebbba ага а DB это алиас для него, ну не совсем для него, а для его "фасада"
Seba
@Siebov
Aug 24 2015 17:42
да да, эт понятно ...
но у меня нет такого в каталоге Database, там есть только ещё 3 каталога factories , migrations , seeds
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 17:42
Database\Eloquent\Builder
Maksim Karpychev
@kodermax
Aug 24 2015 17:42
Привет всем
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 17:43
или Database\Query\Builder
хз
что-то из этого
надо смотреть в провайдере
Maksim Karpychev
@kodermax
Aug 24 2015 17:43
а кто-нибудь использовал sylius на symfony для инет-магазинов?
Seba
@Siebov
Aug 24 2015 17:43
@SerafimArts я так понимаю, что для работы "из коробки" с БД в ларавел нет ничего и это надо как-то докачать?
потмоу что ничего из вышеперечисленного у меня нет
Oleg
@Malezha
Aug 24 2015 17:44
@Sebbba из коробки нужно сделать composer install
Seba
@Siebov
Aug 24 2015 17:44
ни элоквент ни квери/билдер
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 17:44
эээ
Seba
@Siebov
Aug 24 2015 17:44
@Malezha это понятно, это я сделал
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 17:44
ты точно лару ставил, а не Yii например? :D
Seba
@Siebov
Aug 24 2015 17:44
но у меня нет этих каталогов
Paul Klementyev
@klermonte
Aug 24 2015 17:44
@Sebbba ты загляни в исходники ларавел))
там увидишь
berpcor
@berpcor
Aug 24 2015 17:44
@Big-Shark Это очевидно ). Добавление записи в БД, например, тоже есть из коробки, но есть и ORM. Не совсем сравнимые вещи, но, тем не менее, суть отражает. Во многих случаях можно сделать удобную, более высокоуровневую обертку. Я думал, что и в этом случае что-то подобное имеется.
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 17:45
ты втираешь какую-то дичь =))))))))
Seba
@Siebov
Aug 24 2015 17:45
@SerafimArts стопроц)
Paul Klementyev
@klermonte
Aug 24 2015 17:45
я то тут при чем?О_о
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 17:45
ой
мимо
fixed
Paul Klementyev
@klermonte
Aug 24 2015 17:46
thx
Seba
@Siebov
Aug 24 2015 17:47
короче, у меня нет этих каталогов в каталоге датабэйс, что мне делать? докачивать их ?
(ясен пень композером)
Oleg
@Malezha
Aug 24 2015 17:48
Ищи в /vendor/laravel/framework/src/Illuminate/
Seba
@Siebov
Aug 24 2015 17:59
блин, в русскоязычной документации стоооооооооолько неточностей, это капец. открыл в оригинале и там сразу же разобрался...
use DB;
вот всё что надо было дописать.
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 18:00
понимаешь, тут такая ситуация
тут не в доках проблема
Maksim (Ellrion) Platonov
@Ellrion
Aug 24 2015 18:00
в русской доке все ок
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 18:00
а в том, что ты вообще нифига не знаешь язык программирования, который используешь, ибо даже если в доках нету импорта неймспейса - он очевиден, как господин Кеп
без обид =)
Maksim (Ellrion) Platonov
@Ellrion
Aug 24 2015 18:01
одна проблема в руской доке ее по 5.1 нету
кстати кто то в курсе перевод ребята пилят?
просто бодро так переводили а тут глухо
Paul Klementyev
@klermonte
Aug 24 2015 18:11
Я кстати хотел бы помочь с переводом)
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 18:12
@klermonte тебе сюды: https://gitter.im/LaravelRUS/laravel.ru
=)
Maksim (Ellrion) Platonov
@Ellrion
Aug 24 2015 18:13
@klermonte а еще лучше сюда http://laravel.su/articles/rus-documentation-contribution-guide
Paul Klementyev
@klermonte
Aug 24 2015 18:14
ох какие все молодцы, накидали мне ссылок, и где только достали то:D
Роман Сохарев
@greabock
Aug 24 2015 18:14
@Ellrion просто переводом по факту (за исключением мелких допилов) занимался один человек - @slider23. А сейчас он видимо сильно занят. Альтруизм он такой - вчера был запал, а сегодня нет.
Maksim (Ellrion) Platonov
@Ellrion
Aug 24 2015 18:15
@greabock я бы его даже материально поддержал. пусть ставят кнопку доната)
мне в принципе и офф доков хватает, проблем нет, но перевод дело очень полезное для популярности
сам переводить правда не смогу все же читать и писать это разное
berpcor
@berpcor
Aug 24 2015 18:17
@Big-Shark Ну, и, кстати, я кроме getDocComment(); ничего не нашел. Парсить нужно самому. Мне нужно только описание. В Laravel теоретически мог бы быть какой-то парсер.
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 18:18
эм
@berpcor это называется phpdoc
Роман Сохарев
@greabock
Aug 24 2015 18:24
@berpcor composer require phpdocumentor/reflection-docblock
jongleb
@jongleb
Aug 24 2015 18:26
Есть ли функция в TestCase которая подтверждает вывод item'ов в вьюху?
Paul Klementyev
@klermonte
Aug 24 2015 18:26
@jongleb шта?
berpcor
@berpcor
Aug 24 2015 18:27
@SerafimArts Да, я в курсе. О нем и речь. Ты это к чему?..
@greabock Там парсер phpdoc блока имеется?
Kirill Nesmeyanov
@SerafimArts
Aug 24 2015 18:28
@berpcor тебе так сложно его поставить?
учитывая то, что @greabock уже кинул всё, что требуется для этого
=)
jongleb
@jongleb
Aug 24 2015 18:29
@klermonte Ну что то типа $this->visit('ЮРЛ')->ПришлиАйтемыИзМодели()
berpcor
@berpcor
Aug 24 2015 18:29
Поставить - в данный момент да, есть кое-какие сложности.
В документации ничего вразумительного не нашел... пока.
jongleb
@jongleb
Aug 24 2015 18:33
Как в TestCase узнать что данные пришли на страницу скажите пожалуйста?
Paul Klementyev
@klermonte
Aug 24 2015 18:35
@jongleb ты серьезно считаешь, что чем чаще ты задашь один и тот же вопрос, тем выше вероятность получить на него ответ?
jongleb
@jongleb
Aug 24 2015 18:36
@klermonte Ты же переспросил сначала , как бы намекнув что я спросил что то непонятное, вот я и перефразировал
Maksim (Ellrion) Platonov
@Ellrion
Aug 24 2015 18:36
@jongleb тести сам метод выборки а не передачу во вьюху
berpcor
@berpcor
Aug 24 2015 18:36
@klermonte Какое-то странное замечание. На официальном IRC Laravel так, кстати, и советуют делать.
В онлайне появляются новые люди, кто-то прочитает.
Paul Klementyev
@klermonte
Aug 24 2015 18:37
@berpcor я бы понял, если бы между этими событиями прошло 5 минут, или хотя бы пару скринов сообщений, но через 2 сообщения отдно и тоже, моветон по мне
berpcor
@berpcor
Aug 24 2015 18:37
Ну, ... да, сложно не согласиться в таком случае.
Maksim (Ellrion) Platonov
@Ellrion
Aug 24 2015 18:37
@jongleb у тебя что в методе view() может потеряться что ли передача? нет. он протестирован в самом фреймворке.
jongleb
@jongleb
Aug 24 2015 18:38
@Ellrion Понял, а тогда index в контроллере, то есть вывод всех item'ов , что он должен вернуть в тесты? то есть какие на него ассерты
berpcor
@berpcor
Aug 24 2015 18:38
Через два сообщения может и перебор.
Maksim (Ellrion) Platonov
@Ellrion
Aug 24 2015 18:38
@jongleb или протести наличие текста во вьюхе
jongleb
@jongleb
Aug 24 2015 18:39
@Ellrion $this->visit('Some')
->see('Some table') - Это хороший пример теста index функции в контроллере?
Где Some table - Таблица в которую выводится все
Maksim (Ellrion) Platonov
@Ellrion
Aug 24 2015 18:40
@jongleb наверное
jongleb
@jongleb
Aug 24 2015 18:41
@Ellrion Ну в целом я понял как нужно тестировать, спасибо
berpcor
@berpcor
Aug 24 2015 18:58
Может кто-то установить у себя composer require phpdocumentor/reflection-docblock, если не сложно?
Будут какие-то проблемы или нет?..
projct1
@projct1
Aug 24 2015 19:00

нужна помощь знатоков!
у меня урл может быть как для обычной страницы, так и для страницы с товаром, например /about => обычная страница, используется модель Page, и /someproduct => страница карточки товара, используется модель Product
Есть 2 роута:

Route::get('{product?}', 'Admin\ProductController@show')->where('product', '[a-z-\d]+');
Route::get('{slug?}', 'Admin\PageController@show')->where('slug', '[a-z-\d]+');

Как сделать пропуск роута? например чтобы если первый из вышеперечисленных не прокатит, то отработал второй?

одним словом как совместить эти 2 роута, чтобы работали как надо? может реквест подменять?
Brezhnev Ivan
@vanchelo
Aug 24 2015 19:09
@berpcor у меня стал
Ivan Tokar
@ivantokar
Aug 24 2015 19:19
Всем привет! Не могу вернуть прошлые ПОСТ данные с формы, хелпер {{ old('username') }} не работает, пробую $_POST['username'], все нормально, что не так с блэйд хелпером? ларавел 5.1
Brezhnev Ivan
@vanchelo
Aug 24 2015 19:23
old работает если ты сам туда данные запишешь
это не магия
по дефолту прошлые запросы не сейвятся
Oleg
@Malezha
Aug 24 2015 19:28
Хм, но вроде FormRequest сам сохраняет?
Paul Klementyev
@klermonte
Aug 24 2015 19:34
@Malezha куда он сохраняет?
Alexey
@Butochnikov
Aug 24 2015 19:36
@Sebbba русскую доку надо поддерживать в актуальном состоянии. поможешь?
jongleb
@jongleb
Aug 24 2015 19:40
Ребят кто нибудь ловил Argument 1 passed to Illuminate\Auth\Guard::login() must be an instance of Illuminate\Auth\UserInterface При регистрации?
Brezhnev Ivan
@vanchelo
Aug 24 2015 19:52
а у тебя там что?
projct1
@projct1
Aug 24 2015 19:57
разобрался, вот как можно вызывать разные контроллеры по одному роуту, кому-то мб будет интересно:
Route::get('{slug?}', function($slug = '') {
    $item = \App\Models\Product::whereSlug($slug)->first();
    if ($item !== null) {
        $controller = 'ProductController';
    } else {
        $item = \App\Models\Page::whereSlug($slug)->with('product')->first();
        if ($item !== null) {
            $controller = 'PageController';
        }
    }
    if (isset($controller)) {
        return App::make('\App\Http\Controllers\Admin\\' . $controller)->callAction('show', [$item]);
    }
    abort(404);
});
berpcor
@berpcor
Aug 24 2015 19:59
@vanchelo Ага, спасибо. Значит у меня какая-то беда...
berpcor
@berpcor
Aug 24 2015 20:54
Using version ^3.0@dev for phpdocumentor/reflection-docblock
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - phpspec/prophecy v1.4.1 requires phpdocumentor/reflection-docblock ~2.0 -> no matching package found.
    - phpspec/prophecy v1.4.1 requires phpdocumentor/reflection-docblock ~2.0 -> no matching package found.
    - phpspec/prophecy v1.4.1 requires phpdocumentor/reflection-docblock ~2.0 -> no matching package found.
    - Installation request for phpspec/prophecy == 1.4.1.0 -> satisfiable by phpspec/prophecy[v1.4.1].

Potential causes:
 - A typo in the package name
 - The package is not available in a stable-enough version according to your minimum-stability setting
   see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details.

Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.

Installation failed, reverting ./composer.json to its original content.
Victor Golovko
@siptik
Aug 24 2015 21:09
ребята, появилась потребность увеличить скорость разработки. Как вы решали такие проблемы?
может какие есть готовые продукты, типа генераторов админок с большими возможностями?
Victor Golovko
@siptik
Aug 24 2015 21:14
самое главное требование, чтобы поддерживались callback функции для каждого действия
уж очень не люблю писать уродливые костыли, уже был опыт на CI ))