These are chat archives for LaravelRUS/chat

10th
Mar 2015
LaravelButler

Приветствуем Вас, @jevers76, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

LaravelButler

Приветствуем Вас, @Madonia, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

Andy Melentev
@Sinersis
Mar 10 2015 00:54
Всем привет еще раз! Кто подскажет что значит запись
foreach ($fill as $index => $row)Что делает сам оператор я знаю а вот $index=>row меня беспокоит
Denis Isaychenko
@Rhincodon
Mar 10 2015 01:03
чем?
Andy Melentev
@Sinersis
Mar 10 2015 01:20
Не пойму как использовать элемент $index там должны быть данные но при выводе пишет что их там нет т.е. нуль
Andy Melentev
@Sinersis
Mar 10 2015 01:34
Хм... Спасибо, прошу прощения за пою невнемательность
Vladislav Maksimchuk
@condoriano
Mar 10 2015 01:35
обращайся )
LaravelButler

Приветствуем Вас, @cvallejo, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

LaravelButler

Приветствуем Вас, @huynhbathanh, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

Kramidev
@KramiDev
Mar 10 2015 05:31
народ привет.
Кто подскажет как сделать кастомный роут для auth/login
Нужно чтобы post запрос тоже шел например Route::post('/', 'AuthController@postLogin');
то есть /login
Вертекс
@wertex
Mar 10 2015 05:45
а сейчас не идет в таком написании ?
Route::post('/', 'AuthController@postLogin')->before('auth'); попробуй
Kramidev
@KramiDev
Mar 10 2015 05:48

`

Route::get('/login', 'Auth\AuthController@getLogin');
Route::get('/logout', 'Auth\AuthController@getLogout');
Route::post('/login', 'AuthController@postLogin')->before('auth');
`

Вот
задача сделать так, чтобы не дублировалось auth/login
Просто можно ли кастомизировать хоть как нибудь роуты на register и login
как избавится от этого Route::controllers([ 'auth' => 'Auth\AuthController', 'password' => 'Auth\PasswordController', ]);
Laravel 5
Константин Брызгалин
@constb
Mar 10 2015 05:54
не понял про дублирование. там же методы разные.
в чём проблема?
Kramidev
@KramiDev
Mar 10 2015 05:55
Нужен роут /login
И нужно если ошибка входа, неверные данные, он рендерил тут /login
Константин Брызгалин
@constb
Mar 10 2015 05:56
то есть убрать приставку 'auth'?
Kramidev
@KramiDev
Mar 10 2015 05:57
да
вообще убрать. Чтобы /auth/login небыл доступен
Константин Брызгалин
@constb
Mar 10 2015 05:58
тогда всё правильно - просто руками переписать все маршруты на AuthController и PasswordController
Kramidev
@KramiDev
Mar 10 2015 05:58
хорошо где находится в laravel 5 роут register
Константин Брызгалин
@constb
Mar 10 2015 05:58
у них все методы из трейтов идут
Kramidev
@KramiDev
Mar 10 2015 05:59

`<?php namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Contracts\Auth\Registrar;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;

class AuthController extends Controller {

/*
|--------------------------------------------------------------------------
| Registration & Login Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users, as well as the
| authentication of existing users. By default, this controller uses
| a simple trait to add these behaviors. Why don't you explore it?
|
*/

use AuthenticatesAndRegistersUsers;

/**
 * Create a new authentication controller instance.
 *
 * @param  \Illuminate\Contracts\Auth\Guard  $auth
 * @param  \Illuminate\Contracts\Auth\Registrar  $registrar
 * @return void
 */
public function __construct(Guard $auth, Registrar $registrar)
{
    $this->auth = $auth;
    $this->registrar = $registrar;

    $this->middleware('guest', ['except' => 'getLogout']);
}

}
`

Константин Брызгалин
@constb
Mar 10 2015 05:59
Illuminate\Foundation\Auth\ResetsPasswords для PasswordController
Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers для AuthController
Kramidev
@KramiDev
Mar 10 2015 05:59
это что
это подключение классов
Константин Брызгалин
@constb
Mar 10 2015 06:00
это трейты из которых контроллер берёт "изкоробочную" реализацию обработчиков
Kramidev
@KramiDev
Mar 10 2015 06:00
то есть без танцев с бубном в ларавеле не решить
Константин Брызгалин
@constb
Mar 10 2015 06:00
это не классы, это трейты. они как бы подмешиваются в класс
Kramidev
@KramiDev
Mar 10 2015 06:01
а как заменить их
Константин Брызгалин
@constb
Mar 10 2015 06:01
почему, просто маршруты правильно определить. и всё.
Kramidev
@KramiDev
Mar 10 2015 06:01
как найти маршрут register?
Константин Брызгалин
@constb
Mar 10 2015 06:01
заменить элементарно - просто добавить свою реализацию в контроллер и всё
Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers::getRegister очевидно
посмотри как работает Route::controller из документации
Kramidev
@KramiDev
Mar 10 2015 06:02
ага пошел
Константин Брызгалин
@constb
Mar 10 2015 06:02
там автоматом генерятся соответствия маршрутов и обработчиков
просто руками их переписать
главное обработчики все подключить
Kramidev
@KramiDev
Mar 10 2015 06:03
хм.
Константин Брызгалин
@constb
Mar 10 2015 06:03
и ещё в AuthController надо объявить свои redirectPath и loginPath
чтобы перекрыть стоковые из трейта
Kramidev
@KramiDev
Mar 10 2015 06:03
вово это и есть танцы с бубном). Вроде в коробке есть, а реализованное приходится переписывать. )
Константин Брызгалин
@constb
Mar 10 2015 06:03
а не
Kramidev
@KramiDev
Mar 10 2015 06:03
по сути создать свои контроллеры регистра и аус
Константин Брызгалин
@constb
Mar 10 2015 06:04
перекрывать не надо, достаточно добавить в класс проперти
$redirectPath и $loginPath
свои контроллеры у тебя уже есть - просто перекрываешь те методы, реализация который у тебя отличается от стоковой, а остальные берутся из трейта
у меня например авторизация по логину вместо емейла - уже надо подменять.
Kramidev
@KramiDev
Mar 10 2015 06:05
я ниче не понимаю. Что такое проперти с переменными
Константин Брызгалин
@constb
Mar 10 2015 06:06
у класса AuthController могут быть такие поля, а могут не быть. если их нет трейт использует редиректы на '/home' и '/auth/login' соответственно
а если есть - берёт значения из них
Kramidev
@KramiDev
Mar 10 2015 06:06
ну я нашел эти роуты
их заменить можно
но если ошибка при вводе он редиректает из трейта в auth/login
Константин Брызгалин
@constb
Mar 10 2015 06:07
трейт - это не класс. когда ты говоришь use SomeTrait поля и методы из трейта подмешиваются в класс, если их там нет и игнорятся если есть.
Kramidev
@KramiDev
Mar 10 2015 06:07
я понял. это абстракт
Константин Брызгалин
@constb
Mar 10 2015 06:07
то есть у тебя нет на самом деле AuthenticatesAndRegistersUsers::getLogin у тебя есть AuthController::getLogin
как раз абстракт существует как класс, а трейт - не класс
ты не наследуешься от трейта, ты его подмешиваешь в класс
вот например у регистра 2 метода
Константин Брызгалин
@constb
Mar 10 2015 06:09
например, в пхп ты можешь наследоваться только от одного класса, множественного наследования там нет. а трейтов можешь подмешать сколько угодно - они не появляются в цепочке наследования
Kramidev
@KramiDev
Mar 10 2015 06:09
я понял. например в трейте registrar
нет роута
значит он в контроллере
верно?
Константин Брызгалин
@constb
Mar 10 2015 06:10
регистрар у тебя тоже есть, в App\Services, он реализует контракт Registrar, контракт - это интерфейс
регистрар - не трейт
Kramidev
@KramiDev
Mar 10 2015 06:10
:/
Константин Брызгалин
@constb
Mar 10 2015 06:11
регистрар содержит реализации методов определённых в контракте и поскольку интерфейс присутствует в цепочке наследования, он также является его instanceof
интерфейс не содержит кода, но добавляется в цепочку наследования, трейты содержат код, но в наследовании не участвуют.
класс может реализовать интерфейс и подмешать к себе трейт
Kramidev
@KramiDev
Mar 10 2015 06:13
так интерфейс если без кода
как все печально.
ладно спасибо.
Константин Брызгалин
@constb
Mar 10 2015 06:14
поэтому пока AuthController пустой, но с трейтом, он содержит все методы и поля из трейта с их значениями. но когда нужно что-то подменить, достаточно просто нужное поле или метод объявить в классе и тогда из трейта будут браться только те которых в классе нет
Kramidev
@KramiDev
Mar 10 2015 06:14
да не надо обьяснять. Я все равно ниче не понял)
Зачем трейты нужны.
Константин Брызгалин
@constb
Mar 10 2015 06:15
но при этом взаимоотношения класса с трейтом - исключительно их личные дела. то есть AuthController не является instanceof AuthenticatesAndRegistersUsers.
трейты и интерфейсы - части реализации некоего подобия множественного наследования, которого в пхп нет
Kramidev
@KramiDev
Mar 10 2015 06:16
это я понял. издержки языка
Константин Брызгалин
@constb
Mar 10 2015 06:17
но это теория. для задачи кастомизации системы авторизации она не имеет значения )
Kramidev
@KramiDev
Mar 10 2015 06:17
Это я тоже понял.
Еще я понял, чтобы заюзать кастомный роут авторизации, нужно переписывать то что написано
xD php
Константин Брызгалин
@constb
Mar 10 2015 06:18
тебе просто надо руками прописать маршруты и в AuthController добавить путь редиректа на домашнюю страницу и страницу входа
Kramidev
@KramiDev
Mar 10 2015 06:18
ох
а где эти мартшруты взять
вот у меня приложение
там маршрутов нет.
Где мне искать как прописывается маршрут
Dinar Garipov
@garf
Mar 10 2015 06:18
@KramiDev Это не издержки языка а его преимущества :) Нормальные языки не поддерживают множественное наследование. Это рудимент.
Kramidev
@KramiDev
Mar 10 2015 06:18
xD
Константин Брызгалин
@constb
Mar 10 2015 06:19
прочитай как работает Route::controller, посмотри как названы методы в трейте авторизации, испытай момент просветления =)
Dinar Garipov
@garf
Mar 10 2015 06:19
Остался наверно из живых у C++/
Константин Брызгалин
@constb
Mar 10 2015 06:19
я писал на плюсах с десяток лет наверное. множественное наследование в нём наверное одна из самых мутных тем.
костылей и хаков в самом языке хватает
Dinar Garipov
@garf
Mar 10 2015 06:20
Вот я про то же ))
Ничего хорошего в множественном наследовании нет, как мне кажется.
@KramiDev Маршруты как прописываются например можно почитать в документации.
Kramidev
@KramiDev
Mar 10 2015 06:21
я вкурсе как пишутся маршруты
)
тока почему они в приложении не прописаны как в доках
Dinar Garipov
@garf
Mar 10 2015 06:22
@KramiDev В приложении по умолчанию никаких роутов нет.
Ты их создаешь сам как твоей душе угодно.
И почему это они не прописаны как в доках? :)
У тебя какая лара?
Kramidev
@KramiDev
Mar 10 2015 06:23
5
Dinar Garipov
@garf
Mar 10 2015 06:23
4 или 5?
Ок.
Опиши пожалуйста проблему еще раз.
Kramidev
@KramiDev
Mar 10 2015 06:23
убрать из авторизации и регистрации auth
Dinar Garipov
@garf
Mar 10 2015 06:23
Как сейчас выглядит твой роут?
Kramidev
@KramiDev
Mar 10 2015 06:24
по умолчанию так
Route::controllers([ 'auth' => 'Auth\AuthController', 'password' => 'Auth\PasswordController', ]);
Dinar Garipov
@garf
Mar 10 2015 06:25
А этот роут не находится ли в какой-то группе роутов?\
Kramidev
@KramiDev
Mar 10 2015 06:25
нет
если я напишу group(['/']) он возьмет его?
нет наверно auth воткнет
Dinar Garipov
@garf
Mar 10 2015 06:26
нет. Не возьмет, скорее всего.
Kramidev
@KramiDev
Mar 10 2015 06:26
ох.
не возьмет.
Dinar Garipov
@garf
Mar 10 2015 06:26
А ты не используй Route::controller
Kramidev
@KramiDev
Mar 10 2015 06:26
решил попробовать php
xD
Ага а как прописать о
Dinar Garipov
@garf
Mar 10 2015 06:26
Используй Route::get() Route::post()
Kramidev
@KramiDev
Mar 10 2015 06:26
Да
Да а вот auth та не работает
на post
Route::post('/auth/login/,)
вот это не пойдет
если я введу невереные данные тут /login
он редиректает на /auth/login
Dinar Garipov
@garf
Mar 10 2015 06:27
Ага.
Дай секунду.
Ща копну.
Kramidev
@KramiDev
Mar 10 2015 06:27
Попробовал пхп)
разве роут не от метода строится например postLogin() ???
Dinar Garipov
@garf
Mar 10 2015 06:28
Нет.
Kramidev
@KramiDev
Mar 10 2015 06:28
жесть какая
Dinar Garipov
@garf
Mar 10 2015 06:28
Роут задается паттерном.
SliderVM
@SliderVM
Mar 10 2015 06:29
Это в Yii так роуты строятся вроде
Kramidev
@KramiDev
Mar 10 2015 06:29
да как бы почти везде так строятся
Dinar Garipov
@garf
Mar 10 2015 06:29
@KramiDev Я же говорю, у тебя нет жесткой привязки к роутам. Ты можешь в роуте написать что угодно и по этому роуту отправить на любой метод контроллера.
Да как бы почти. Это не тот вариант.
Поитай все таки сначала.
Константин Брызгалин
@constb
Mar 10 2015 06:30
@KramiDev на самом деле Yii тут особняком. в ларавеле можно определять роуты произвольно. вообще в ларавеле принято иметь в контроллерах мало кода. если у роута сложный обработчик - выносить его код в одну или несколько команд.
JhaoDa
@jhaoda
Mar 10 2015 06:30
Какая жесть
Ребята, вы доки читаете вообще?
Константин Брызгалин
@constb
Mar 10 2015 06:31
Route::controller - особняком стоит. я его кстати вообще недолюбливаю - не даёт передавать параметры в контроллер и биндить модели.
и Route::resource тоже как-то фу-фу-фу
Kramidev
@KramiDev
Mar 10 2015 06:32
А почему не любишь ресурс
удобно же
Dinar Garipov
@garf
Mar 10 2015 06:32
@KramiDev Потому что из той же серии что и Route::controller
Kramidev
@KramiDev
Mar 10 2015 06:33
Ну что плохого в ресурс
1 строкой crud
Константин Брызгалин
@constb
Mar 10 2015 06:33
@KramiDev и ещё - можно подсмотреть как делаются маршруты в Route::controller с помощью дампа php artisan route:list узнаешь много нового =)
Dinar Garipov
@garf
Mar 10 2015 06:33
Удобно в определенных случаях, но не гибко.
Kramidev
@KramiDev
Mar 10 2015 06:33
почему не гибко?
а хотя незнаю в ларе можно в ресурсы свои роуты добавлять?
Dinar Garipov
@garf
Mar 10 2015 06:33
потому что роуты уже составлены.
JhaoDa
@jhaoda
Mar 10 2015 06:34
@KramiDev а ты доки почитай
Dinar Garipov
@garf
Mar 10 2015 06:34
Ну можно сделать resource и остальное руками дописать. Но я не люблю мешанину и лишние ненужные роуты.
JhaoDa
@jhaoda
Mar 10 2015 06:34
И будешь знать, можно или нет
Константин Брызгалин
@constb
Mar 10 2015 06:34
@KramiDev если надо быстро отдать модель аяксовым обработчикам или тому же ангуляру, наверное ресурс идеален. если строится обычный CRUD страницами безо всякого аякса, слишком много лишней возни с методами, и структура жёсткая, не факт что соответствует желаемому UI
я счас пишу админку к проекту, начал с ресурсов, повозился с контроллерами и в итоге пришёл к прописыванию всех маршрутов по-простому
много использую Route::group впрочем
Kramidev
@KramiDev
Mar 10 2015 06:35
@constb почему допиши, сгрупируй, подмени имя. А если у тебя в контроллере куча разных имен то это уже не ресурс же
ресурс crud
Константин Брызгалин
@constb
Mar 10 2015 06:38
@KramiDev ну, у меня например есть вложенные ресурсы. у меня например есть групповые действия над записями. нет отдельного show сразу edit. помаленьку набирается и в итоге получается что resource одновременно оказывается недостаточным и избыточным. плюс ещё нельзя кнопку удалить сделать просто ссылкой - надо обязательно воротить форму, в неё пихать _token, _method и пр. а ещё нельзя сделать редактирование попапом - потому что id не в инпуте, а в form[action] и это ещё отдельный гемор его там подменять.
проще руками маршруты набить и сосредоточиться на функционале и покрытии тестами, чем бороться с ларавелем там где этого не нужно.
тем более что заказчику достаточно если будет просто работать. он посадит контент-менеджеров долбить по кнопкам и всё. а мне надо побыстрее сделать и уложиться в дедлайн.
JhaoDa
@jhaoda
Mar 10 2015 06:42
@constb Удаление по GET-ссылке?
Константин Брызгалин
@constb
Mar 10 2015 06:45
@jhaoda да, знаю косяк. кое-где ещё осталось, для остального переписываю. добавляю data-method-post к ссылкам, а в обработчике:
        // ссылка, выполняющая POST-запрос

        $(document).on('click', 'a[data-method-post]', function (ev) {
            if (ev.isDefaultPrevented())
                return false;
            if ($(this).is("[data-confirm]") && !confirm(this.getAttribute("data-confirm")))
                return false;
            if ($(this).is("[data-loader]"))
                $($(this).data('loader')).show();
            $.post($(this).attr("href")).then(function () {
                location.reload();
            });
            return false;
        })
JhaoDa
@jhaoda
Mar 10 2015 06:46
@constb ну вот это уже правильней, сам примерно так делаю
Dinar Garipov
@garf
Mar 10 2015 06:46
А что плохого в удалении по GET?
Я имею ввиду, если мы в приложении пользуемся только GET и POST.
JhaoDa
@jhaoda
Mar 10 2015 06:46
@gaaarfild то, что GET не может менять состояние системы
Dinar Garipov
@garf
Mar 10 2015 06:46
А его надо менять?
JhaoDa
@jhaoda
Mar 10 2015 06:47
Как умно пишут, он идемподентен
Dinar Garipov
@garf
Mar 10 2015 06:47
И что еще за состояние системы? :)
Константин Брызгалин
@constb
Mar 10 2015 06:47
@gaaarfild удаление - операция изменения состояния =)
JhaoDa
@jhaoda
Mar 10 2015 06:47
@gaaarfild удаление ресурса — это изменение состояния
@gaaarfild почитай хотя бы в википедии об этом
Dinar Garipov
@garf
Mar 10 2015 06:47
Я вас не понимаю. :) Я жму ссылку, в которой прописан айдишник. По гет обращается в контроллер, удаляет то что надо, и потом на фронте делаешь все что надо.
LaravelButler

Приветствуем Вас, @lazarlong, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

Dinar Garipov
@garf
Mar 10 2015 06:48
Какие еще могут быть состояния в вебе?
Константин Брызгалин
@constb
Mar 10 2015 06:48
дело ещё в том что всё кроме GET и HEAD ларавель закрывает CSRF-токеном. GET-запрос легко подделать.
Dinar Garipov
@garf
Mar 10 2015 06:48
Ну если только в этом проблема - то да.
Но CSRF - это ж не состояние
Константин Брызгалин
@constb
Mar 10 2015 06:48
но ты не будешь вешать токены на GET-запросы. поэтому для всех изменений проще делать POST
состояние - это совокупность набора данных в БД, в кэше, в файлах, в памяти приложения, в очередях, ещё бог знает в чём
GET должен делать только выборки и отображение данных
JhaoDa
@jhaoda
Mar 10 2015 06:50
И десять подряд GET'ов с одинаковыми параметрами должны возвращать идентичные результаты
Dinar Garipov
@garf
Mar 10 2015 06:50
Вы короче про каноническое говорите :)
Константин Брызгалин
@constb
Mar 10 2015 06:50
всё что делает INSERT UPDATE DELETE должно жить в POST запросах. ну в идеале. на самом деле там в вебе много что учитывается - посещения всякие и пр.
JhaoDa
@jhaoda
Mar 10 2015 06:50
Это и есть идемподентность
@gaaarfild а ты отринул каноны?
Dinar Garipov
@garf
Mar 10 2015 06:50
нет конечно же.
Но и не ограничиваю себя ими :)
Константин Брызгалин
@constb
Mar 10 2015 06:51
но к идеалу надо стремиться. удалять товары в админке GET-запросами - точно плохое проектирование. на фронтенде ещё хуже - по GET-ссылкам легко ходят поисковики. они там такого наудаляют в процессе =)
Dinar Garipov
@garf
Mar 10 2015 06:51
Если я в какой-то ситуации вижу больше выгоды в нарушении канона - то я нарушаю.
JhaoDa
@jhaoda
Mar 10 2015 06:51
Ну успехов.
Dinar Garipov
@garf
Mar 10 2015 06:51
А ты сноб :)
JhaoDa
@jhaoda
Mar 10 2015 06:52
Я бы мог сказать, что эти правила придуманы не просто так, как и любые другие правила, но зачем? Ты же не поверишь
Dinar Garipov
@garf
Mar 10 2015 06:52
Почему же не поверю. :)
Я верю.
Константин Брызгалин
@constb
Mar 10 2015 06:52
@gaaarfild я обычно тоже не заморачиваюсь. но если мне достаточно на ссылку повесить дата-атрибут и она становится POST-ссылкой - это вполне удачное решение
Dinar Garipov
@garf
Mar 10 2015 06:52
Просто мне нужны аргументы.
Вот сейчас единственный разумный аргумент, который я услышал - про поисковики
Константин Брызгалин
@constb
Mar 10 2015 06:52
@gaaarfild и CSRF
LaravelButler

Приветствуем Вас, @RomanKorzhavin, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

JhaoDa
@jhaoda
Mar 10 2015 06:53
@gaaarfild ты этого не знал? Пичалька...
Константин Брызгалин
@constb
Mar 10 2015 06:53
этих двух аргументов в принципе достаточно чтобы задуматься о переделке
Dinar Garipov
@garf
Mar 10 2015 06:53
Я про это просто не думал
Константин Брызгалин
@constb
Mar 10 2015 06:53
@gaaarfild ну вот теперь знаешь. =)
Dinar Garipov
@garf
Mar 10 2015 06:53
А насчет пост запросов. Вот у меня табличка в 100 записей. Для яудаления одного элемента мне нужно создать 100 форм?
Константин Брызгалин
@constb
Mar 10 2015 06:53
вообще этот чат - самое полезное что мне попадалось за последнее время. столько нового узнаю =)
Dinar Garipov
@garf
Mar 10 2015 06:54
Или есть другие, более разумные методы?
Это да : )
JhaoDa
@jhaoda
Mar 10 2015 06:54
Пффф, в армии комбат рассказывал, что за каждой статьёй устава караульной службы стоит не один труп. Но многие не задумываются. Поэтому трупов с каждым годом всё больше.
Константин Брызгалин
@constb
Mar 10 2015 06:54
@gaaarfild формально да. но я выше привёл обработчик. я пишу <a href="{{ route( ... ) }}" data-method-post>Удалить</a>
JhaoDa
@jhaoda
Mar 10 2015 06:54
Ничего не напоминает?
Dinar Garipov
@garf
Mar 10 2015 06:55
@jhaoda Ты сейчас продолжаешь говорить про то, что мы уже проехали и обсудили.
Я не неадекватный новичок. Я просто люблю аргументированные доводы, а не просто "Так не делают".
JhaoDa
@jhaoda
Mar 10 2015 06:56
@gaaarfild мышление людей инертно же.
Dinar Garipov
@garf
Mar 10 2015 06:57
Когда мне объясняют, и я действительно вижу, что так надо, я не спорю, а делаю. Если вижу, что че-то неубедительно, то продолжаю спорить.
JhaoDa
@jhaoda
Mar 10 2015 06:57
Ну хз, я прочитал доки и понял
Константин Брызгалин
@constb
Mar 10 2015 06:57
ещё есть jquery-ujs - он решает ту же задачу. изначально он написан рубистами, но решает те же задачи что стоят при работе с ларой - стандарты-то одни и те же
JhaoDa
@jhaoda
Mar 10 2015 06:57
Т.е. тамошних аргументов мне хватило
Константин Брызгалин
@constb
Mar 10 2015 06:57
и кстати он тоже автоматом фигачит токен в запросы
Dinar Garipov
@garf
Mar 10 2015 06:58
@jhaoda Видимо за 6 лет работы в вебе, ты все еще не знаешь некоторых вещей. :)
Всего знать невозможно. Именно поэтому я и сижу в этом чате.
JhaoDa
@jhaoda
Mar 10 2015 06:58
@gaaarfild 6?
Dinar Garipov
@garf
Mar 10 2015 06:58
@constb А что, data-method-post = превращает запрос в POST?
@jhaoda 6
JhaoDa
@jhaoda
Mar 10 2015 06:59
@gaaarfild откуда такая странная цифра?
Dinar Garipov
@garf
Mar 10 2015 06:59
@jhaoda от арабов наверно =)
Константин Брызгалин
@constb
Mar 10 2015 06:59
))))
@gaaarfild выше обработчик запостил
он перехватывает клики
на a[data-method-post]
14 минут назад
JhaoDa
@jhaoda
Mar 10 2015 07:00
Ну ладно, придумали 6, значит 6, не буду разубеждать
Dinar Garipov
@garf
Mar 10 2015 07:00
@constb Но это не решает же проблему поисковиков.
JhaoDa
@jhaoda
Mar 10 2015 07:01
А это для одминок решение
Константин Брызгалин
@constb
Mar 10 2015 07:01
@gaaarfild решает. маршрут в ларе не на Route::any а на Route::post стоит
на гет-запросе он не отрезолвится
Dinar Garipov
@garf
Mar 10 2015 07:01
@constb понял.
@jhaoda А по факту, я ни разу не писал приложение, которое давало что-то удалять без авторизации.
JhaoDa
@jhaoda
Mar 10 2015 07:02
Я все равно во фронте так не делаю, свои же съедят... в админке еще можно
Константин Брызгалин
@constb
Mar 10 2015 07:02
так ресурс работает. у него index/store и edit/update/destroy на одном маршруте работают.
@gaaarfild CSRF опасен тем, что запрос выполняется человеком с авторизацией без его ведома.
Dinar Garipov
@garf
Mar 10 2015 07:04
@constb это да.
Константин Брызгалин
@constb
Mar 10 2015 07:04
ты зашёл на страницу, а там скрытый ифрейм, с src="http://example.com/admin/product/deleteAll" и привет =)
Dinar Garipov
@garf
Mar 10 2015 07:06
так настройки безопасности браузера не передают куки в айфрейм же.
И в этом случае и CSRF-токен не сработает же.
Константин Брызгалин
@constb
Mar 10 2015 07:07
куки example.com в ифрейме-то будут присутствовать. как ты думаешь всякие виджеты вконтактика работают.
а там гет-запрос, на нём токен не будет проверяться
Dinar Garipov
@garf
Mar 10 2015 07:07
Верно
Тогда такой вопрос.
Вот токен создался и записался в куку.
Ой.
В сессию.
Константин Брызгалин
@constb
Mar 10 2015 07:08
он и в куку записался, продолжай
Dinar Garipov
@garf
Mar 10 2015 07:08
В общем, я сам ответил на свой вопрос )))
Константин Брызгалин
@constb
Mar 10 2015 07:08
а. ок ))
Dinar Garipov
@garf
Mar 10 2015 07:09
Спасибо за помощь.
Dinar Garipov
@garf
Mar 10 2015 07:16
@constb при использовании ujs как передается токен?
LaravelButler

Приветствуем Вас, @Roverok, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

Alexander Popov
@ruelephant
Mar 10 2015 07:28
кто тут?
Dinar Garipov
@garf
Mar 10 2015 07:31
я
Alexander Popov
@ruelephant
Mar 10 2015 07:32
привет, кстати :)
Dinar Garipov
@garf
Mar 10 2015 07:33
Привет. =)
Orel
@2byte
Mar 10 2015 07:33
Я
Alexander Popov
@ruelephant
Mar 10 2015 07:33
до меня кстати только что дошло, что "привет" это частный случай рекурсии, но там грязных хак с счетчиком. На каждый "привет" человек обязан писать привет, который вызовет привет. Но все не так же :)
Dinar Garipov
@garf
Mar 10 2015 07:34
это хендшейк ))
Alexander Popov
@ruelephant
Mar 10 2015 07:36
я помню как двух говорливых ботов зациклил, переименовался в "бот" и написал "привет" первый ответил "привет, бот", второй увидел слово "бот" и написал ему с обращением рандомную фразу
NelinD
@NelinD
Mar 10 2015 07:36
это функция которая вертает свое имя...
Alexander Popov
@ruelephant
Mar 10 2015 07:36
соотвественно первый тоже кинул ему фразу :)
поскольку таймаута там не было, они зафлудили весь лог
пока им shutdown принудительно не сделали
было забавно конечно, ответ шел со скоростью пинга
так что я опасный человек бгг
Константин Брызгалин
@constb
Mar 10 2015 07:41
@gaaarfild да, ujs берёт токен из meta[name=token] и кладёт его в X-CSRF-Token заголовок. лара 5.0.13 уже принимает его в таком виде.
LaravelButler

Приветствуем Вас, @simple17, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

Alexander Popov
@ruelephant
Mar 10 2015 08:36
@Rhincodon ты попал в группу laravel в новости в ВК :)
с переводом "Паттерн Репозиторий"
win
Vladislav Maksimchuk
@condoriano
Mar 10 2015 08:52
@constb огго, за ujs отдельное спасибо
а то я все думаю - вот бы как в рельсах, вот бы как в рельсах, и че-то не подумал что можно взять да и спользовать ) ...
Alexander Popov
@ruelephant
Mar 10 2015 08:54
девушки это просто ЦЕНЗУРА какая то
договаривались на сегодня, а она не только не выехала, она даже не написала
ну как это называется :\
слов уже не хватает, одни цифры 1234567890
censoredgit
@censoredgit
Mar 10 2015 08:58
@ruelephant приглашай их в места которые рядом с домом)
Evgeniy
@Ruzarh
Mar 10 2015 08:58
Ну смотря на что договаривались, и в каком контексте.
Alexander Popov
@ruelephant
Mar 10 2015 08:58
ну договаривались что она приедет сегодня, утренним рейсом (она в другом городе)
Vladislav Maksimchuk
@condoriano
Mar 10 2015 08:58
@censoredgit +1 у меня сработало, и мне не влом было выходить и жена теперь есть
Alexander Popov
@ruelephant
Mar 10 2015 08:58
уж полночь близется, а германа все нет.
звоню, она заспанным голосом отвечает
"не смогла вчера"
(там в ночьной рейс хотела ехать)
ну хоть три строчки могла написать, что не села даже :\
LaravelButler

Приветствуем Вас, @ShawnMcCool, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

LaravelButler

Приветствуем Вас, @itoldya, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

Alexander Popov
@ruelephant
Mar 10 2015 09:01
мне интересно все девушки такие или нет
slider23
@slider23
Mar 10 2015 09:01

А что плохого в удалении по GET?

http://kkirsanov.livejournal.com/404721.html

Константин Брызгалин
@constb
Mar 10 2015 09:01
@ruelephant это от пола не зависит )
Alexander Popov
@ruelephant
Mar 10 2015 09:02
@constb ну елы палы, если мужик будет таким то ему рано или поздно начистят так сказать лицо
Константин Брызгалин
@constb
Mar 10 2015 09:02
@slider23 прекрасно. хотя и не первый раз такие истории читаю.
Vladislav Maksimchuk
@condoriano
Mar 10 2015 09:03
@slider23 но при чем тут get, если там чел вторизацию забыл сделать?
Константин Брызгалин
@constb
Mar 10 2015 09:03
@ruelephant по-разному бывает. но обычно со временем жизнь таки учит думать о других. да.
slider23
@slider23
Mar 10 2015 09:04
вот тут можно провериться на такую следилку, кстати: http://lleo.me/dnevnik/2015/02/20.html
Alexander Popov
@ruelephant
Mar 10 2015 09:05
@constb ну знаешь, я сам любитель опаздывать на встречи, ибо из дома надо ломом вытаскивать (особенно от стула) а тут и пробки по 5 баллов. Но меня вечно грызет совесть и я хотя бы пишу смс...
но что бы вообще не придти это нонсенс
я уверен она сейчас продолжает свою подрывную деятельность (т.е. дрыхнет) :)
Orel
@2byte
Mar 10 2015 09:15
@slider23 там ссылка Разгадка http://sporaw.livejournal.com/347832.html мой провайдер есть в том списке, за мной получается следят )
Alexander Popov
@ruelephant
Mar 10 2015 09:20
и не только!
за тобой уже выехали
LaravelButler

Приветствуем Вас, @Mathieudewet, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

Alexander Popov
@ruelephant
Mar 10 2015 09:21
за вами за всеми выехали!
ждите, однажды они доедут
Константин Брызгалин
@constb
Mar 10 2015 09:22
обнаружил подставу в ларе. если использовать terminable Middleware, то все возникающие в terminate ошибки будут незаметны - к тому моменту как они генерятся, страница уже сформирована и отдана браузеру. у меня незаметно не работал код, который я там написал. оказывается он по чесноку все ошибки дампил в логи, но на странице всё было ок. кроме того дебагбар не отображает сделанные в terminate запросы. по той же причине.
mastfreaky
@mastfreaky
Mar 10 2015 09:22
Привет. Как сделать поддомен в роутинге?
Alexander Popov
@ruelephant
Mar 10 2015 09:22
@mastfreaky почитать документацию?
mastfreaky
@mastfreaky
Mar 10 2015 09:22
Почему то даже простые примеры не работают.
Alexander Popov
@ruelephant
Mar 10 2015 09:23
Route::group(['domain' => '{account}.myapp.com'], function()
{

    Route::get('user/{id}', function($account, $id)
    {
        //
    });

});
Роман Сохарев
@greabock
Mar 10 2015 09:23
@condoriano я даже не знаю... банальнейший прикол тебе расскажу:
На форуме парень добавил себе в послесловие (ну или как оно там называется) тег img ( разрешались там картинки ), карстика ссылалась на адрес /admin/logout. Каждый раз, когда модератор читал сообщение от этого парня, или заходил на его профиль, он разлогинивался. И таким образом даже забанить-то его не мог. Пример банальный, но суть ясна. Get ссылка - вещь публичная.
mastfreaky
@mastfreaky
Mar 10 2015 09:23

Route::group(['domain' => 'test.site.loc'], function()
{
Route::get('/', function()
{
return 'test';
});
});

Вот это не работает

Denis Isaychenko
@Rhincodon
Mar 10 2015 09:23
http://www.csstyle.io/ интересно интересно
Alexander Popov
@ruelephant
Mar 10 2015 09:24
@mastfreaky и как ты запрашивешь?
mastfreaky
@mastfreaky
Mar 10 2015 09:25
@ruelephant test.site.loc
Константин Брызгалин
@constb
Mar 10 2015 09:26
@mastfreaky а маршрут get('/') там есть?
Alexander Popov
@ruelephant
Mar 10 2015 09:26
@constb там же есть в примере у него
mastfreaky
@mastfreaky
Mar 10 2015 09:26
@constb, есть, я выше написал
Константин Брызгалин
@constb
Mar 10 2015 09:26
а, во втором примере.
ну не знаю тогда, не пользовался доменами. возможно что-то есть в доках. возможно настройки веб-сервера - так например nginx с хостами по маске положит в SERVER_NAME совсем не HTTP_HOST.
вообще я бы начал с phpinfo
открыл бы test.site.loc/phpinfo.php и посмотрел что веб-сервер в скрипты суёт
если ничего не помогло - дебаггером по исходникам. заодно многое нового об устройстве лары узнаешь.
Alexander Popov
@ruelephant
Mar 10 2015 09:30
БОЛЬ!
а если бы была поддержка можно было бы им вынести мозг :(
mastfreaky
@mastfreaky
Mar 10 2015 09:30
@constb, куда конкретно смотреть?
Alexander Popov
@ruelephant
Mar 10 2015 09:31
я помню на битрексе на платной поддержке сидел
всмысле обращался
вставляет :)
Константин Брызгалин
@constb
Mar 10 2015 09:31
@mastfreaky $_SERVER["HTTP_HOST"] $_SERVER["SERVER_NAME"]
mastfreaky
@mastfreaky
Mar 10 2015 09:32
@constb, www.site.loc
Константин Брызгалин
@constb
Mar 10 2015 09:33
@mastfreaky ну вот. значит веб-сервер так настроен.
Alexander Popov
@ruelephant
Mar 10 2015 09:34
@mastfreaky а ничего что у тебя приложение ищет test.site.loc
Константин Брызгалин
@constb
Mar 10 2015 09:34
лара берёт данные о хосте из параметров, больше ей неоткуда.
Alexander Popov
@ruelephant
Mar 10 2015 09:34
@constb mod_telepat подключайте :)
mastfreaky
@mastfreaky
Mar 10 2015 09:35
@ruelephant, так мне нужно и то, и другое.
Alexander Popov
@ruelephant
Mar 10 2015 09:35
@mastfreaky это как это?
хост может быть только один
Константин Брызгалин
@constb
Mar 10 2015 09:36
@mastfreaky www.site.loc/phpinfo.php должен показывать www.site.loc, а test.site.loc/phpinfo.php должен показывать test.site.loc
mastfreaky
@mastfreaky
Mar 10 2015 09:36
@ruelephant, мне нужен сайт с несколькими поддоменами: test.site.loc и site.loc
Константин Брызгалин
@constb
Mar 10 2015 09:36
@mastfreaky если это не так, то лара ничего сделать не сможет
@mastfreaky что в качестве веб-сервера?
mastfreaky
@mastfreaky
Mar 10 2015 09:37
@constb, xampp
Нужно добавить ещё один виртуальный хост?
Роман Сохарев
@greabock
Mar 10 2015 09:37
@mastfreaky направь поддомен в туже папку. Ну не тупите, народ.
Orel
@2byte
Mar 10 2015 09:38
@mastfreaky конечно надо)
mastfreaky
@mastfreaky
Mar 10 2015 09:39
Я добавил его как ServerAlias
Константин Брызгалин
@constb
Mar 10 2015 09:40
не помню как в апаче. возможно алиас не проканает. или это зависит от версии. виртуальный хост в ту же папку - железобетонное решение.
Alexander Popov
@ruelephant
Mar 10 2015 09:41
а *. в виртуалхосте не прокатит?
на каждый суб домен плодить сущности не тру
Константин Брызгалин
@constb
Mar 10 2015 09:41
да, счас подумал, по-моему SERVER_NAME всегда будет каноническим именем хоста из ServerName независимо от алиасов.
@ruelephant nginx в таких случаях положит * в SERVER_NAME.
Alexander Popov
@ruelephant
Mar 10 2015 09:42
черт!
Константин Брызгалин
@constb
Mar 10 2015 09:43
но у nginx'а есть решение - он формирует эти данные через fastcgi_params и ему можно сказать класть в SERVER_NAME содержимое HTTP_HOST запроса.
Alexander Popov
@ruelephant
Mar 10 2015 09:44
как то я не очень доверяю HTTP_ переменным
Константин Брызгалин
@constb
Mar 10 2015 09:44
правда тогда надо будет либо в коде алиасить www.site.com на site.com либо редиректами отсекать www.
ну тогда отдельными вирт. хостами.
mastfreaky
@mastfreaky
Mar 10 2015 09:48
@constb, сейчас у меня через ServerAlias ссылается на обычный роут(игнорит роуст с domain)
А с отдельным виртуальным хостом вообще всё сломалось.
А если роут, к примеру, не get('/'), а get('/test'), то работает.
Константин Брызгалин
@constb
Mar 10 2015 09:51
@mastfreaky я реально не спец по апачу. у меня давно уже везде nginx + php-fpm. но я тебе точно говорю, ты на правильном пути.
Alexander Popov
@ruelephant
Mar 10 2015 09:51
да у вас прямо как в рекламе "все болит, ничего не помогает"
можно подробности?
Константин Брызгалин
@constb
Mar 10 2015 09:52
@mastfreaky ещё смотри, у тебя же есть get('/') для основного сайта. если он объявлен до домена, то он перехватит / для всех доменов
маршруты обрабатываются последовательно сверху вниз
Alexander Popov
@ruelephant
Mar 10 2015 09:52
@mastfreaky "А с отдельным виртуальным хостом вообще всё сломалось." как именно сломалось?
Константин Брызгалин
@constb
Mar 10 2015 09:52
до первого совпадения
Alexander Popov
@ruelephant
Mar 10 2015 09:53
@mastfreaky завещание то написало?
всмысле логи
mastfreaky
@mastfreaky
Mar 10 2015 09:54
@constb, о спасибо. Сработало.
@ruelephant, я, по ходу, не в ту папку направил, потому и сломалось
Константин Брызгалин
@constb
Mar 10 2015 09:54
@mastfreaky я сегодня прямо как гадалка. где мой хрустальный шар? =)
Alexander Popov
@ruelephant
Mar 10 2015 09:55
@constb телепаты вышли из отпуска?
Константин Брызгалин
@constb
Mar 10 2015 09:55
гадаю на ларавеле, навожу виртуальные хосты по чату, чищу DDD-карму )
Alexander Popov
@ruelephant
Mar 10 2015 09:55
УРААА
mastfreaky
@mastfreaky
Mar 10 2015 09:56
Вот, почему я больше люблю компилируемые языки.
Потому что оно: либо работает, либо не компилируется.
Alexander Popov
@ruelephant
Mar 10 2015 09:57
ну тут ты не прав
вон знакомый сишник, постоянный проблемы с буферами
( * ) ( * )
mastfreaky
@mastfreaky
Mar 10 2015 09:58
Не ну си - это конечно ещё та морока
Мне больше по душе шарп
Alexander Popov
@ruelephant
Mar 10 2015 09:58
расстрелять без права переписки
Константин Брызгалин
@constb
Mar 10 2015 09:58
@mastfreaky это ты круто пошутил )))
@mastfreaky компилируемые языки умеют скомпилировавшись так отработать, что за голову хватаешься
Alexander Popov
@ruelephant
Mar 10 2015 09:59
@constb особенно если ошибка в компиляторе :)
mastfreaky
@mastfreaky
Mar 10 2015 09:59
@constb, они делают ровно то, что напишешь.
Alexander Popov
@ruelephant
Mar 10 2015 09:59
нефига
Константин Брызгалин
@constb
Mar 10 2015 09:59
@mastfreaky ну да как же ))))
Alexander Popov
@ruelephant
Mar 10 2015 10:00
пых вон тоже делает то что написано
<?php die(); ?>
и он умирает, так и не родившись
а в компилируемых языка, еще -супердлинныйаргументкомпиляторапередатьчтобыонпонялчтозастандарт
и всякие забавные -флаги
mastfreaky
@mastfreaky
Mar 10 2015 10:01
Ещё такой вопрос: как получить hostname через laravel?
Константин Брызгалин
@constb
Mar 10 2015 10:01
@ruelephant с другой стороны у пхп вообще стандарт языка ещё не написан )
Alexander Popov
@ruelephant
Mar 10 2015 10:02
@constb нафиг нужен
мы сами себе стандарт
Константин Брызгалин
@constb
Mar 10 2015 10:02
@mastfreaky \Request::server('HTTP_HOST') подойдёт?
Alexander Popov
@ruelephant
Mar 10 2015 10:02
чего только стоит работа со строками
это же просто сказка
Константин Брызгалин
@constb
Mar 10 2015 10:03
или наверное всё же \Request::server('SERVER_NAME')
@ruelephant ну справедливости ради, у нас задачи стоят немного другие. на компилируемых языках решаются вещи, для которых пхп плохо предназначен. просто для работы нужен правильный инструмент.
Alexander Popov
@ruelephant
Mar 10 2015 10:04
@constb для всего остального есть jphp :)
LaravelButler

Приветствуем Вас, @gowthamSelvaraj, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

mastfreaky
@mastfreaky
Mar 10 2015 10:06
@constb, не подходит
LaravelButler

Приветствуем Вас, @rusl2401, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

Константин Брызгалин
@constb
Mar 10 2015 10:08
@mastfreaky тебе какой именно хостнейм нужен?
mastfreaky
@mastfreaky
Mar 10 2015 10:10
@constb, второго уровня
Константин Брызгалин
@constb
Mar 10 2015 10:12
@mastfreaky в смысле?
Alex Soveliev
@suroviy
Mar 10 2015 10:13
Что можно взять под MIT лицензией для построения адмики к сайту, так что бы грида и дерево было, есть варианты или ручками писать надо?
mastfreaky
@mastfreaky
Mar 10 2015 10:14
@mastfreaky, например тот же мой test.site.loc(который ServerAlias), а мне нужно вытянуть site.loc.
Константин Брызгалин
@constb
Mar 10 2015 10:15
@mastfreaky тогда preg_match )
Vladislav Maksimchuk
@condoriano
Mar 10 2015 10:16
@greabock хех, прикольный лайф-хак
@greabock я вот ujs увидел и понял чего мне в жизни не хватало, rest + ujs и никаких великов
Alex Soveliev
@suroviy
Mar 10 2015 10:18
и где его взять он есть на хабе?
http://www.jeasyui.com/demo/main/index.php я обычно вот этот фрем юзаю, но только у него лицензия GPL не очень удобно для коммерческих проектов ищу альтернативу на MIT лицензии пость даже и по проще
Константин Брызгалин
@constb
Mar 10 2015 10:44
новый обработчик ошибок в ларе - фуфло. http://prntscr.com/6ezt5d вот поди угадай где что пошло ололо...
Роман Сохарев
@greabock
Mar 10 2015 10:48
@constb тебе и старый бы тоже самое сказал
стектрейс-то одинаковый
Константин Брызгалин
@constb
Mar 10 2015 10:53
@greabock обидно.
подскажешь в чём я не прав?
UserVisitLogEntry::with(
    [ 'user' => function ($query) { $query->select('id', 'login', 'name', 'photo'); } ]
)->latest('started_at')->take(200)->get();
вот так всегда, спросишь, прочитаешь свой вопрос внимательно и сразу понятно где ошибка =)
select массив принимает, а не произвольный список аргументов
Роман Сохарев
@greabock
Mar 10 2015 10:56
@constb покажи метод user в UserVisitLogEntry
NelinD
@NelinD
Mar 10 2015 10:56
@greabock спокойно, он уже нашел
Роман Сохарев
@greabock
Mar 10 2015 10:57
у вас там связь ментальная?
Константин Брызгалин
@constb
Mar 10 2015 10:58

@NelinD кстати не нашёл.
@greabock точно, вторая ошибка:

class UserVisitLogEntry extends Model {
    public function user()
    {
        $this->belongsTo('App\User');
    }
}

=)

Роман Сохарев
@greabock
Mar 10 2015 10:58
выглядит так буд-то у него метод юзара или вообще пустой, или не возвращает ничего
Константин Брызгалин
@constb
Mar 10 2015 10:58
return забыл )
Роман Сохарев
@greabock
Mar 10 2015 10:58
ну вот
NelinD
@NelinD
Mar 10 2015 10:58

@greabock я читаю до конца текст=)

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

Роман Сохарев
@greabock
Mar 10 2015 10:59
@NelinD ошибка не об этом говорила кстати )
NelinD
@NelinD
Mar 10 2015 11:00
@greabock ну он то не уточнил что не то нашел+)
Роман Сохарев
@greabock
Mar 10 2015 11:00
она говорила, что невозможно применить модификатор запроса жадной загрузки к нулю
Denis Isaychenko
@Rhincodon
Mar 10 2015 11:03
http://bosnadev.com/2015/03/07/using-repository-pattern-in-laravel-5/ прочитал эту статейку что в вк группе запостили, интересный способ разгрузки репозиториев. Перевод делать вечером?
Orel
@2byte
Mar 10 2015 11:04
Заглянул в л5, сразу бросились в глаза контракты, это сейчас так все делают, создают интерфейсы, и вызывают их в своих классах и биндят либы ?
Роман Сохарев
@greabock
Mar 10 2015 11:05
@Rhincodon это какая-то эмуляция Propel
Константин Брызгалин
@constb
Mar 10 2015 11:05
@2byte я для своих сервисов обхожусь без контрактов - беру через IoC сам класс
@2byte наверное за контракты нужно браться если предстоит делать разные варианты реализации одной и той же вещи
так мы выглядим для новичков
Константин Брызгалин
@constb
Mar 10 2015 11:07

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

app()->call('App\Services\VisitLogger@visit');

и всё.

FalkonInSky
@FalkonInSky
Mar 10 2015 11:07
Вот уж точно! Особенно когда начинаешь разбираться.....
LaravelButler

Приветствуем Вас, @FalkonInSky, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

Denis Isaychenko
@Rhincodon
Mar 10 2015 11:08
@greabock ага, похоже :) ну в любом случае мне нравится такой способ организации репозиториев, класс не будет разрастаться при большом-кол-ве сложных запросов.
Роман Сохарев
@greabock
Mar 10 2015 11:10

я для своих сервисов обхожусь без контрактов - беру через IoC сам класс

Ты берешь через SC, IoC - это совсем другое
И да - это ужасно. Нам уже лет пятнадцать объясняют зачем использовать DI. А ты просто сделал три шага назад.

Alexey
@Butochnikov
Mar 10 2015 11:11
@condoriano а что за "ujs"?
Константин Брызгалин
@constb
Mar 10 2015 11:11
@greabock ну вот, а я-то думал что молодец. )))
Alexey
@Butochnikov
Mar 10 2015 11:12
@constb спасибо
Константин Брызгалин
@constb
Mar 10 2015 11:13
на самом деле мне просто надо было чтобы в вызове контейнер разрешил зависимости. поэтому app->call - то что мне нужно. задачи отделить в отдельный класс не было.
Vladislav Maksimchuk
@condoriano
Mar 10 2015 11:19
@Rhincodon ну ничесси, это ж сколько классов будет для такого $this->film->pushCriteria(new LengthOverTwoHours());
по классу на условие это не излишество ли? )
@Rhincodon ой, что-то моя фраза прозвучала как притензия к автору, но нет, я просто, для дискуссии )
Роман Сохарев
@greabock
Mar 10 2015 11:20
@constb я бы даже спор затеял, и спустя часа полтора этого спора, ты бы обязательно нашел надуманную и притянутую за уши причину почему тебе нужно сделать именно так, вместо того чтобы сделать правильно. Но мне просто лень. Делай как умеешь.
JhaoDa
@jhaoda
Mar 10 2015 11:26

Писать:

public function __construct(FilmContract $film)

полезно, если класс-реализатор контракта должен быть синглтоном
А в случае репозитория можно сразу писать нужный репозиторий и не париться с app->make()

Константин Брызгалин
@constb
Mar 10 2015 11:26
@greabock я бы просто спорить не стал. я пишу по-простому в первую очередь чтобы уложиться по времени. но когда вижу что что-то пошло не так, просто рефакторю так чтобы было более правильно. вполне есть вещи которые я ещё не осознал, не осилил, грабли на которые я не наступил. но всё впереди )
Роман Сохарев
@greabock
Mar 10 2015 11:27
@jhaoda и с тобой я спорить не буду тоже, исход точно тот же )
JhaoDa
@jhaoda
Mar 10 2015 11:28
@greabock а я с тобой и не спорил
@greabock ты же ратуешь за DI, я правильно понимаю?
Роман Сохарев
@greabock
Mar 10 2015 11:29
ну да
JhaoDa
@jhaoda
Mar 10 2015 11:29
Ну так и я за него же
Просто я не постулирую, что контракт ОБЯЗАН быть. Он может быть, если нужен
Denis Isaychenko
@Rhincodon
Mar 10 2015 11:30
@condoriano не излишество, а разделение ответственности. Так наш репозиторий будет знать только базовые find, findBy и тд, а остальные сложные методы уходят каждый в свой класс. Как то легче на душе станет чтоль. :)
Роман Сохарев
@greabock
Mar 10 2015 11:30
@jhaoda значит я тебя не так понял
JhaoDa
@jhaoda
Mar 10 2015 11:31

@greabock я имел ввиду, что можно писать

public function __construct(FilmRepository $film)

, а не

public function __construct(FilmContract $film)

Разница только в том, что в первом случае инстанс репозитория будет создаваться каждый раз новый

Роман Сохарев
@greabock
Mar 10 2015 11:32
@condoriano @Rhincodon типичные критерии могут повторяться и не дублироваться для каждого репозитория
@jhaoda вот теперь я тебя понял, я точно о том же
@jhaoda на самом деле, для контракта также может быть прописан синглтон.
JhaoDa
@jhaoda
Mar 10 2015 11:34
@greabock для класса, может быть?
Для контракта это и так понятно
Я вообще заметил (даже по себе), что фреймворк начинает определять сознание :( Надо бороться
Роман Сохарев
@greabock
Mar 10 2015 11:35
@jhaoda да
JhaoDa
@jhaoda
Mar 10 2015 11:36
@greabock ну тогда нужен сервис-провайдер, а можно же и без него, и без синглтонов
Роман Сохарев
@greabock
Mar 10 2015 11:36
@jhaoda ну вот смотри
$instance = new FilmRepository;
$app->instanse('FilmRepository ', $instance );
JhaoDa
@jhaoda
Mar 10 2015 11:37
В общем, кому как вкуснее
Роман Сохарев
@greabock
Mar 10 2015 11:37
и теперь он тоже синглтон
JhaoDa
@jhaoda
Mar 10 2015 11:37
@greabock это понятно, но где это писать? В сервис-провайдере же, учит на Великий Тэйлор
Роман Сохарев
@greabock
Mar 10 2015 11:38
ага
JhaoDa
@jhaoda
Mar 10 2015 11:39
Ну а если пофиг на синглтоны (а в случае репозиториев это оправдано), то мы живем без отдельных контрактов на каждую репу и без описания биндов-синглтонов в сервис-провайдере
Роман Сохарев
@greabock
Mar 10 2015 11:41
@jhaoda оправдано? Может быть. Однако не соглашусь лишь по одной причине - это приучает писать плохо.
то есть даже не так
Это оправдано только тогда, когда ХОРОШО ты понимаешь, что делаешь.
JhaoDa
@jhaoda
Mar 10 2015 11:42
@greabock т.е. ты считаешь, что контракт для репы нужен обязательно?
Роман Сохарев
@greabock
Mar 10 2015 11:43
@jhaoda теоретически, если предположить, что у тебя могут быть разные репозитории с общим интерфейсом.
если ты знаешь наверняка, что такого не случится, тогда нет.
Vladislav Maksimchuk
@condoriano
Mar 10 2015 11:45
@greabock про повторение интересно, но интересно как оно на практике будет.. что ли действительно попробовать
JhaoDa
@jhaoda
Mar 10 2015 11:46
@greabock а, вот и всплыло недопонимание. Я говорил про отдельный контракт для каждой репы.
Т.е. есть UserRepo, PostRepo, CommentsRepo. Если мы предполагаем, что они могут иметь разные реализации, то нам нужны контракты UserContract, PostContract, CommentsContract для корректного описания специфичных для каждой репы методов. Но эти контракты расширяют базовый RepoContract.
Роман Сохарев
@greabock
Mar 10 2015 11:48
@jhaoda да, я именно об этом.
unlike777
@unlike777
Mar 10 2015 11:50
Ребята подскажите почему в whereRaw не подставляется автоматически префикс таблиц
->whereRaw('test.good_id = goods.id')
Роман Сохарев
@greabock
Mar 10 2015 11:51
@jhaoda то есть $app->bind('UserRepositoryContract', 'UserSpecificRepository');
JhaoDa
@jhaoda
Mar 10 2015 11:52
@greabock тогда я не понимаю, зачем, если предполагается одна реализация?
Роман Сохарев
@greabock
Mar 10 2015 11:53
я имел ввиду разные репозитории для конкретной сущности
JhaoDa
@jhaoda
Mar 10 2015 11:54
@greabock так у них и есть общий интерфейс RepoContract
Константин Брызгалин
@constb
Mar 10 2015 11:54
чёт я похоже то ли после праздников не отошёл, то ли в принципе задолбался. а может сегодня просто день говнокодера http://prntscr.com/6f0bob
Роман Сохарев
@greabock
Mar 10 2015 11:54
@jhaoda да, но это скорее "абстрактный" репозиторий
@unlike777 почитай значение слова raw в переводчике, и к тебе придет понимание
JhaoDa
@jhaoda
Mar 10 2015 11:55
@greabock ну да, там описаны базовые вещи типа create, findBy и прочего
unlike777
@unlike777
Mar 10 2015 11:56
@greabock т.е. не задумано что будет подставляться префикс? Хотя в доках так написано что как будто должен
JhaoDa
@jhaoda
Mar 10 2015 11:56
@greabock а репо-специфичные типа findByUsername зачем описывать в контракте, если реализация его будет одна?
Ладно, я чую, что мы о чем-то одном говорим, но по-разному. Не суть, короче...
Роман Сохарев
@greabock
Mar 10 2015 12:00
@jhaoda вот они как раз и должны быть описаны в контракте UserRepositoryContract. А реализация этого интерфейса может происходить в разных репозиториях. Например один репозиторий может работать Eloquent, а другой реализуется с помощью Datamaper. Или чего-то еще
LaravelButler

Приветствуем Вас, @Chrisbon, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

JhaoDa
@jhaoda
Mar 10 2015 12:01
@greabock ну я и говорю, что если всегда Eloquent, то можно и забить на это
Не могут же два разных по смыслу репозитория реализовывать UserRepositoryContract, верно?
Роман Сохарев
@greabock
Mar 10 2015 12:03
@jhaoda а я говорю, что нужно понимать, почему ты "забиваешь" или "не забиваешь". А не слепо "забивать" или "не забивать" ))
JhaoDa
@jhaoda
Mar 10 2015 12:04
@greabock дык, понимать всегда полезно, не только здесь
NelinD
@NelinD
Mar 10 2015 12:06
логично
Роман Сохарев
@greabock
Mar 10 2015 12:06
@jhaoda это да
LaravelButler

Приветствуем Вас, @egatrop, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

Роман Сохарев
@greabock
Mar 10 2015 13:41
ну что-то чат засох ))
Alexander Popov
@ruelephant
Mar 10 2015 13:41
полейте кровью девственниц
route.php
$lastApiVersion = 1;
$apiVersion = [1 => 'v1', 2 =>'v2'];

Route::group(['middleware' => 'tokenAuth', 'namespace' => 'Api'], function() use ($apiVersion, $lastApiVersion)
{
    $routesAdd = function ($route_prefix=null) {
        if (is_null($route_prefix)) {
            Route::resource('api/метод', 'контролер');
            Route::resource('api/метод2', 'контролер2');
        } else {
            Route::resource('api/'.$route_prefix.'/метод', 'контролер');
        }
    };

    foreach ($apiVersion as $version=>$namespace) {
        Route::group(['namespace' => $namespace], function() use ($version, $lastApiVersion, $routesAdd) {
            $routesAdd('v'.$version);
            if ($version == $lastApiVersion) {
                $routesAdd();
            }
        });
    }
});
как вам? :)
Роман Сохарев
@greabock
Mar 10 2015 13:43
ужасно )
Alexander Popov
@ruelephant
Mar 10 2015 13:44
а есть конкретные предложения? :)
я пытался автоматизировать так сказать добавление роутов для restfull api
что бы в одном месте только хранить структуру
Роман Сохарев
@greabock
Mar 10 2015 13:45
$lastApiVersion = 1; это не должна ли быть кука или сессия?
$apiVersion = [1 => 'v1', 2 =>'v2']; это не должно ли хранится в конфигах?
Alexander Popov
@ruelephant
Mar 10 2015 13:45
нет, $lastApiVersion это текущая версия апи, последняя
я побоялся выбирать max из apiVersion
для надежности вынес
Роман Сохарев
@greabock
Mar 10 2015 13:46
тем более, все должно быть в конфигах
Alexander Popov
@ruelephant
Mar 10 2015 13:46
но это относится к роутингу
Роман Сохарев
@greabock
Mar 10 2015 13:46
и что
Alexander Popov
@ruelephant
Mar 10 2015 13:46
если вынести в конфиг то придется в двух местах править если что
но вообще я подумал, моя эпипея обречена на провал :(
Роман Сохарев
@greabock
Mar 10 2015 13:47
во вторых, динамическое создание роутов - это жесть
Alexander Popov
@ruelephant
Mar 10 2015 13:47
но не писать же полотна
под каждую версию
а если их 10 версий апи?
/api/v1/метод
/api/v3/метод
...
/api/v25/метод
это все один метод, только он для совместимости тащит старые реализации
а таких методов дофигищща
Роман Сохарев
@greabock
Mar 10 2015 13:48
ты не на том уровне абстрагируешься
Alexander Popov
@ruelephant
Mar 10 2015 13:49
а на каком?
контролеры то нет проблем копипастить, дело в "тупых" роутах
Роман Сохарев
@greabock
Mar 10 2015 13:49
пусть контроллер подключает версию апи соответствующую параметру /{api}/
и работает с ней
Alexander Popov
@ruelephant
Mar 10 2015 13:50
но я планировал просто закопипастить контролер под каждую версию
Роман Сохарев
@greabock
Mar 10 2015 13:50
не надо мутить стопятсот роутов, не надо мутить стопятсот контроллеров, мути только разные апи
Alexander Popov
@ruelephant
Mar 10 2015 13:50
она же может менятся как по структуре, так и по параметрам
единственное что контролеры у меня предусмотрены "тонкие", основное вынесено в job
а контролеры это просто переходники к единственному job последней версии
вот когда настанет момент что он "единственный, последний" job уедет далеко от первой версии контролера, вот тогда мы точно приедем
не смог пока корректно решить проблему
как сохранять совместимость если я даже предсказать не могу куда уедет апи через месяц
есть условно апи метод getUserList который возращает список юзверов в определенном формате, через месяц мы уже сьехали на другую бд, сменили платформу, убрали колонки в бд но совместимость должна быть сохранена!
вот в чем трабла
Orel
@2byte
Mar 10 2015 13:55
@ruelephant Повезло что яп не сменили еще)
Alexander Popov
@ruelephant
Mar 10 2015 13:56
это корпоративная среда, мы не можем заставить клиентов просто так "следовать новым курсом"
они будут всегда в отстое
поскольку у них свои задачи стоят, им не до "обновления интерфейса работы с апи"
Роман Сохарев
@greabock
Mar 10 2015 13:57
я тебе просто скажу, что ты делаешь бобуйню. Если ты хочешь послушать как правильно - я тебе расскажу. Но я тебе сражу скажу: если тебе захочется найти причину почему нельзя делать так, как я тебе расскажу, то ты ее найдешь. Вне зависимости от того, что я предложу.
Alexander Popov
@ruelephant
Mar 10 2015 13:58
ну предложи, пока я от тебя услышал только про параметр
NelinD
@NelinD
Mar 10 2015 13:58
@greabock я хочу послушать
Alexander Popov
@ruelephant
Mar 10 2015 14:03
вот идеальной резины не получается :(
хотелось бы конечно
всегда будут лимиты после которого совместимость разваливается
Роман Сохарев
@greabock
Mar 10 2015 14:04
У тебя есть разные апи. Это как классы с набором функций. У них есть разные методы, к ним ты и должен обращаться. Контроллер может быть один. Разный интерфейс у апи? Окей, а что будет в твоем примере по потеряному роуту? 404? Вот и бросай 404 при отстутствующем методе.
Alexander Popov
@ruelephant
Mar 10 2015 14:04
ты не понял
это не разные апи, а разные версии ОДНОГО И ТОГО же апи
представь что у тебя надо поддерживать все релизы твоего кода одновременно
Роман Сохарев
@greabock
Mar 10 2015 14:05
да какая разница то
Alexander Popov
@ruelephant
Mar 10 2015 14:05
пример
есть метод getUserList
пусть он возращает список пользователей в формате json
Роман Сохарев
@greabock
Mar 10 2015 14:05
тебе не нужно поддерживать старые апи, апи никогда не меняется без смены версии.
что-то поменял - новая версия апи. Иначе и быть не может
Alexander Popov
@ruelephant
Mar 10 2015 14:06
а как это в коде выражается?
Роман Сохарев
@greabock
Mar 10 2015 14:06
ислючение составляет несоответствие документации
Alexander Popov
@ruelephant
Mar 10 2015 14:06
копипаст контролеров?
Роман Сохарев
@greabock
Mar 10 2015 14:07
да при чем тут контроллеры вообще
Alexander Popov
@ruelephant
Mar 10 2015 14:07
ну при том
был контролер User у него метод getUserList, теперь он в новой версии возращает список пользователей но уже в другом формате
Роман Сохарев
@greabock
Mar 10 2015 14:07
application programming interface - где ты тут увидел слово контроллер?
Alexander Popov
@ruelephant
Mar 10 2015 14:07
при этом надо оставить и старый getUserList но "рядышком"
тааакс
@greabock под API я подрузомеваю набор restfull контролеров, которые оперируют сущностями
это как прослойка между клиентами и нашей инфраструктурой
они доступны по AJAX запросам, подписанными ключем клиента
это даже близко к эмуляции Remote Procedure Call
Роман Сохарев
@greabock
Mar 10 2015 14:13
restfull подразумевает, что есть определенный набор методов, который не меняется (если набор методов меняется - это не restfull). Твой контроллер, может подключать различные версии "внутреннего апи" (того, который определен в параметре) и перепоручать уже этому "внутреннему апи" действия. Как они там реализованы - его вообще не волнует.
Alexander Popov
@ruelephant
Mar 10 2015 14:14
ну смотри, например User create метод
он например возращает только ID юзвера, а потом понадобилось что бы он возвращал все данные
при этом "старую" реализацию нужно сохранить
ты предлагаешь внутри метода create сделать такое?
public function create() { 
    if ($this->apiVersion == 1) { return ...... } else { return ..... }
}
и эта ветвистая лапша на все методы перекинется
Роман Сохарев
@greabock
Mar 10 2015 14:18
$app->bind('v1', 'Api\ApiV1');

в контроллере

public function  create(Request $requset, $api)
{
    return $app->make($api)->create($requset);
}

один контроллер на все апи.

Alexander Popov
@ruelephant
Mar 10 2015 14:19
под $api ты подрузомеваешь api version?
Роман Сохарев
@greabock
Mar 10 2015 14:19
да
Alexander Popov
@ruelephant
Mar 10 2015 14:19
тогда так и написал бы :)
ты предлагаешь конкретные реализации еще в классы запрятать?
типо инкапсулировать тело метода в классы которые лежат в Api\ApiVX папке
Роман Сохарев
@greabock
Mar 10 2015 14:21
полюбому это можно еще как-то сделать. Однако, даже это лучше городушек в роутах
Alexander Popov
@ruelephant
Mar 10 2015 14:22
но городушки в роутах у меня по другой причине случились
я сам себя запер, я инкапсулировал не в "абстрактных" классах, а в job
Роман Сохарев
@greabock
Mar 10 2015 14:22
как я и говорил
сейчас найдется тысяча причин
Alexander Popov
@ruelephant
Mar 10 2015 14:24
ну ты предложил почти мой вариант, просто я не знал фитчу про прокидывания параметров
щаз думаю абстрактные классы <> dispatch и job
Orel
@2byte
Mar 10 2015 14:25
Л5 в методах контроллера можно вставлять классы?
Alexander Popov
@ruelephant
Mar 10 2015 14:25
вставлять классы? :)
ты имеешь введу иньекции может быть в аргументах?
типо public function method(MyMegaClass $class) { }
Роман Сохарев
@greabock
Mar 10 2015 14:26
@2byte это и в 4.2 было
Orel
@2byte
Mar 10 2015 14:27
@greabock только в конструкторе
Роман Сохарев
@greabock
Mar 10 2015 14:27
хз
да какая разница
Alexander Popov
@ruelephant
Mar 10 2015 14:27
@greabock а как почему ты использовал абстрактные классы, а не job в своей реализации?
абстрактные не в понятии php
Роман Сохарев
@greabock
Mar 10 2015 14:28
@ruelephant а вот джобами уже пусть сам класс апи рулит
Alexander Popov
@ruelephant
Mar 10 2015 14:28
дополнительная прослойка, ммм
зачем?
я использовал джобы что бы можно было этот же код из консоли вызывать
но если у меня есть прослойка с апи, я уже могу их вызывать из команды
Роман Сохарев
@greabock
Mar 10 2015 14:29
что тебе сейчас мешает?
Alexander Popov
@ruelephant
Mar 10 2015 14:29
мне мешает отсуствие понимание куда будет двигатся продукт, и понимание что надо оставлять совместимость с первых версии до нашей эры и до современности
Роман Сохарев
@greabock
Mar 10 2015 14:30
Суть в том, что теперь создавая новое Апи ты просто расширяешь старое и переопределяешь методы, которые изменились
Alexander Popov
@ruelephant
Mar 10 2015 14:30
новую версию только
Роман Сохарев
@greabock
Mar 10 2015 14:30
это я и имел ввиду
Alexander Popov
@ruelephant
Mar 10 2015 14:31
я правильно понимаю ты предлагаешь эти классы апи положить прямо в /app/api/v1/класс.php
а когда новая версия выходит еще одну папку копипастом создавать?
типо /app/api/v2/класс.php
Роман Сохарев
@greabock
Mar 10 2015 14:32
можно и так
можно еще над этим подумать
но суть, я думаю, ясна
Alexander Popov
@ruelephant
Mar 10 2015 14:33
смущает прослойка job
думаю может это оверинженеринг и надо ее того самого
удалить из схемы
Роман Сохарев
@greabock
Mar 10 2015 14:34
я хз
это уже твои заморочки )
Alexander Popov
@ruelephant
Mar 10 2015 14:34
просто раньше функцию твоих абстрактных классов исполняли контролеры
а из за трюка с bind теперь это не возможно
я вообще не любитель плодить сущностей, пытаюсь все упростить
Роман Сохарев
@greabock
Mar 10 2015 14:35
а вообще. Есть под лару пакеты для создания апи
можно их юзать и не мучать ослика
lafafm
@lafafm
Mar 10 2015 14:38

Доброе время суток

Подскажите пожалуйста куда смотреть

Заметил что довольно долго грузяться страницы в laravel, поставил laravel-debugbar он показал следующее:

Booting (19.07s)
Application (4.97s)
After application (178.5ms)

Нельзя ли где-то подробнее посмотреть что именно занимает так много времени в booting? Или возможно скажите где может быть проблема

Заранее спасибо

Роман Сохарев
@greabock
Mar 10 2015 14:39
пять секунд? О_о
это мощно
да какой там....
lafafm
@lafafm
Mar 10 2015 14:40
Эмм 5 секунд это Application, booting так вообще 19
Роман Сохарев
@greabock
Mar 10 2015 14:40
что за приложение такое?
lafafm
@lafafm
Mar 10 2015 14:41
И я хз в чем проблема так как грузиться стандартная страница, на все запросы через Eloquent уходит 136,62ms
Роман Сохарев
@greabock
Mar 10 2015 14:41
а сколько запросов к бд, если не секрет?
lafafm
@lafafm
Mar 10 2015 14:41
12 statements were executed, 4 of which were duplicated
Роман Сохарев
@greabock
Mar 10 2015 14:42
а голую лару ставил?
NelinD
@NelinD
Mar 10 2015 14:42
@lafafm бд удаленная?
lafafm
@lafafm
Mar 10 2015 14:42
Да, с нуля lara 4.2
Нет в данном примере все запросы на локальную БД
NelinD
@NelinD
Mar 10 2015 14:43
@lafafm список пакетов
Роман Сохарев
@greabock
Mar 10 2015 14:43
@lafafm тогда у тебя проблемы с сервером
lafafm
@lafafm
Mar 10 2015 14:43
Сейчас из модулей стоит авторизация на Sentry и собственно laravel debug-bar
Nikolay Kostyurin
@JiLiZART
Mar 10 2015 14:43
Такие штуки очень хорошо помогает отлавливать https://github.com/phacility/xhprof
lafafm
@lafafm
Mar 10 2015 14:44
@greabock Уже исключили, все это дело стоит на VPS KVM 1.5 gb озу да и проц не слабенький
Nikolay Kostyurin
@JiLiZART
Mar 10 2015 14:44
обычно у меня такие дикие тормоза бывали из-за curl запросов
Роман Сохарев
@greabock
Mar 10 2015 14:45
да нет цифры фантастические, порядка 25 секунд
lafafm
@lafafm
Mar 10 2015 14:45
@JiLiZART Я бы сам на курл грешил так как знаю что он может порядком подпортить время загрузки
Но тут ниодного запроса куда-то вне сервера нету..
Nikolay Kostyurin
@JiLiZART
Mar 10 2015 14:45
sentry не?
lafafm
@lafafm
Mar 10 2015 14:46
@greabock сейчас занят 1 гб оперативной из 1.5 и проц совсем не загружен..
Alexander Popov
@ruelephant
Mar 10 2015 14:46
а на чистом контролере тоже самое?
попробуйте тестовый создать пустой, для замера
lafafm
@lafafm
Mar 10 2015 14:46
@ruelephant Сейчас проверю

@ruelephant Да уж.. Это печально
Так же тормозит
Чуть меньше правда, но разница не большая

Единственное что 7 запросов в Eloquent запускаються в App::before, но они за 100ms выполняються...

NelinD
@NelinD
Mar 10 2015 14:50
@lafafm а тексты запросов
Alexander Popov
@ruelephant
Mar 10 2015 14:51
@lafafm признавайся, что ты еще ставил из пакетов?
Evgenij
@Kremon
Mar 10 2015 14:51
доброго времени суток. @lafafm виртуалка?
Alexander Popov
@ruelephant
Mar 10 2015 14:51
посмотри Kernel.php
lafafm
@lafafm
Mar 10 2015 14:51
Вырезка с первой страницы:
select * from `users` where `users`.`id` = '7' limit 143.69ms
select * from `throttle` where `user_id` = '7' limit 1360μs
select * from `groups` where `name` = 'Root' limit 17.15ms
select * from `groups` where `name` = 'SuperRoot' limit 1870μs
select `groups`.*, `users_groups`.`user_id` as `pivot_user_id`, `users_groups`.`group_id` as `pivot_group_id` from `groups` inner join `users_groups` on `groups`.`id` = `users_groups`.`group_id` where `users_groups`.`user_id` = '7'5.78ms
select * from `ProjectsList`550μs
select * from `scripts` order by `order` asc400μs
select * from `scripts` order by `order` asc240μs
select * from `users`260μs
select * from `throttle` where `user_id` = '7' limit 1410μs
select * from `groups` where `name` = 'Root' limit 1310μs
select * from `VLog` order by `time` desc limit 16 offset 011.18ms
select * from `ProjectsList`
@Kremon Нет, KVM
Alexander Popov
@ruelephant
Mar 10 2015 14:52
@lafafm посмотри $middleware
потом в основном конфиге providers
lafafm
@lafafm
Mar 10 2015 14:52
@ruelephant где взять полный список пакетов что бы посмотреть все утановленные?
Alexander Popov
@ruelephant
Mar 10 2015 14:52
я тебе сказал, что посмотри в config/app.php и в app/http/Kernel.php
не подключен ли там мусор
полный список пакетов в корне файл лежит composer.json
дай его тоже
lafafm
@lafafm
Mar 10 2015 14:53
Все пакеты Illuminate родные?
Alexander Popov
@ruelephant
Mar 10 2015 14:53
да
это уже провайдера, а не пакеты
но ты дальше посмотри
не подключено ли там пакости
lafafm
@lafafm
Mar 10 2015 14:54

@ruelephant app/http/Kernel.php

Такого пути нету, Laravel 4.2

Alexander Popov
@ruelephant
Mar 10 2015 14:54
а тфу ты
ну в 4.2 не подскажу путь
народ пусть скинет :)
Роман Сохарев
@greabock
Mar 10 2015 14:55
@ruelephant в 4.2 нету кернела
Alexander Popov
@ruelephant
Mar 10 2015 14:55
ну подскажите где есть там :)
lafafm
@lafafm
Mar 10 2015 14:58
Нашел 2 левых пакета в composer.json но после того как их убрал и пересобрал, ушло только 5-7 сек
Ребят
Я только что снес Doctrine, ничего...?
Я просто не помню я его ставил, или оно идет в стандарте..
Alexander Popov
@ruelephant
Mar 10 2015 15:00
зачисти конфиги если его подключал
щаз ругань пойдет если его юзал
lafafm
@lafafm
Mar 10 2015 15:01
Да ругани не пошло, просто понял что название знакомое
Но все равно тормозит..
Evgenij
@Kremon
Mar 10 2015 15:03
логи веб-сервера посмотри, в Ларе errors.log глянь . и такое бывает, пописывает в тихоря
у меня так за 3 дня на продакшене 10М ошибок накопилось, а дело было в битой ссылке блейд-шаблона и Лара молчала с debuger -> true
lafafm
@lafafm
Mar 10 2015 15:07
@Kremon Лог Лары пустой
Последняя ошибка в 10 утра, но тогда она явно была..

Вспомнил об еще одной проблеме

На сервере есть 2 проекта
1 на Ларе, второй на чистом php

Сейчас тестил загрузку страниц лары, в ps -aufx висит 200+ процессов php-cgi,
И я хз почему но такая ерунда выходит только с Ларой, на чистом проекте сколько не перезагружай страницу процесов больше 10 не бывает (проект пока только пишеться на сервере одновременно 2-3 человека от силы сидят)

Alexander Popov
@ruelephant
Mar 10 2015 15:12
что-то вы нафигачили
Evgenij
@Kremon
Mar 10 2015 15:12
@lafafm php5-cgi или просто php-cgi? отработка через FastCGi получается
lafafm
@lafafm
Mar 10 2015 15:13
@Kremon /usr/bin/php-cgi
У меня статика через nginx идет вся
Evgenij
@Kremon
Mar 10 2015 15:20
@lafafm права на запись и выполнение директории проекта, возможно storage 777 ...
Alexander Popov
@ruelephant
Mar 10 2015 15:21
а зачем такие права?
lafafm
@lafafm
Mar 10 2015 15:23
Ладно, спасибо ребят
Буду смотреть что за ерунда твориться на сервере...
Alexander Popov
@ruelephant
Mar 10 2015 15:37
Route::resource('api/{apiVersion}/метод', 'контролер');
Undefined variable: apiVersion
what?
я что-то не правильно делаю?
Evgenij
@Kremon
Mar 10 2015 15:39
@ruelephant возможно нет +w, т.е. для записи. обычно php-cgi в ожидании, nginx не убивает процесс. и время жизни дикое, если с утра висит ) у меня похожий случай был.
Evgenij
@Kremon
Mar 10 2015 16:34
@lafafm Все-таки, php-fpm предпочтительней. php-cgi пережиток 90-х связанный с такими вот зависаниями. При установке composer - рекомендуют FPM. если, конечно второй проект крутиться на php-cgi (необходим) на KVM - php5-cgi , собственно, тот же бинарник с поддержкой sapi, fastcgi.
Orel
@2byte
Mar 10 2015 16:45
Фасады убрали? В доки нету, в фв есть
JhaoDa
@jhaoda
Mar 10 2015 16:50
@2byte теперь фасады это моветон
Orel
@2byte
Mar 10 2015 16:50
@jhaoda Не понял
JhaoDa
@jhaoda
Mar 10 2015 16:51
@2byte но в доках есть — http://laravel.su/docs/5.0/facades
Orel
@2byte
Mar 10 2015 16:52
@jhaoda А нашел, недосмотрел
LaravelButler

Приветствуем Вас, @rmomogi, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

Orel
@2byte
Mar 10 2015 18:06
Подскажите c DispatchesCommands не вкурю где юзается
$this->dispatchFrom('Command\Class\Name', $request, [
    'firstName' => 'Taylor',
]);
Alexander Popov
@ruelephant
Mar 10 2015 18:27
можно в контролере
можно в команде (консольной)
Orel
@2byte
Mar 10 2015 18:29
@ruelephant После вызова dispatch ? Или это тоже самое но с передачей реквеста с полями ?
Alexander Popov
@ruelephant
Mar 10 2015 18:31
это вместо насколько я помню
просто туда передается текущий $request удобно
это все отличие от dispatch
Orel
@2byte
Mar 10 2015 18:32
@ruelephant и тут первый аргумент строка
Alexander Popov
@ruelephant
Mar 10 2015 18:33
это вопрос? это утверждение! это высказывание.
я не понял :)
Orel
@2byte
Mar 10 2015 18:34
@ruelephant в конструкторе команды __construct($firstName) ?
Alexander Popov
@ruelephant
Mar 10 2015 18:37
не помню
глянь доку
Denis Isaychenko
@Rhincodon
Mar 10 2015 19:07
так как сегодня день репозиториев то ещё один перевод о них https://gist.github.com/Rhincodon/bb78be2d6bb3022177b4 :)
пока притормозил с переводом ddd quickly, потому как начал читать http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215
Роман Сохарев
@greabock
Mar 10 2015 19:12
@Rhincodon ща заценю
Роман Сохарев
@greabock
Mar 10 2015 19:18
@Rhincodon когда он говорит "Blueprint" он имеет ввиду "чертеж" или "каркас", я бы все же перевел этот термин, потому что в ларе есть класс Blueprint. И это может запутать
Denis Isaychenko
@Rhincodon
Mar 10 2015 19:19
@greabock Понял, сейчас поправлю. Спасибо, остальное норма? :)
Роман Сохарев
@greabock
Mar 10 2015 19:19
еще не дочитал
Alexey
@Butochnikov
Mar 10 2015 19:21
@Rhincodon может уже пора статьи на сайт выкладывать?
Denis Isaychenko
@Rhincodon
Mar 10 2015 19:22
@Butochnikov сюда https://laravel.ru/ ? я на самом деле не против :)
Orel
@2byte
Mar 10 2015 19:22
@Rhincodon su
Роман Сохарев
@greabock
Mar 10 2015 19:22
@Rhincodon хороший перевод. Я правда ничего нового для себя не вынес. Но в целом годная статья для тех, кто еще не сталкивался с репозиториями.
JhaoDa
@jhaoda
Mar 10 2015 19:22
Я, кстати, в том числе и по этой статье делал у себя репозитории
Alexey
@Butochnikov
Mar 10 2015 19:23
на ru можно в любой момент, если ты зареген
Denis Isaychenko
@Rhincodon
Mar 10 2015 19:23
@2byte что то не вижу там блока статей на su
JhaoDa
@jhaoda
Mar 10 2015 19:24
Но потом от идеи «contract-per-repository» отказался
Роман Сохарев
@greabock
Mar 10 2015 19:24
@Rhincodon скоро появятся
Vitaliy Stepanenko
@Nayjest
Mar 10 2015 19:24
@Rhincodon
Я бы пожертвовал дословностью перевода в пользу простоты текста:
Итак, создадим абстрактный класс AbstractEloquentRepository, который мы будем наследовать своих репозиториях.
Denis Isaychenko
@Rhincodon
Mar 10 2015 19:24
@greabock тогда как появятся, перенесу :) Кстати редактор надеюсь markdown будет?
Роман Сохарев
@greabock
Mar 10 2015 19:25
@Rhincodon безусловно

@Nayjest

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

я вообще не понял что и куда ты спрягал и склонял )

Vitaliy Stepanenko
@Nayjest
Mar 10 2015 19:27
А вообще, по поводу оригинальной статьи -- зачем придумывать себе какие-то репозитории, если в основе ларавела использован другой паттерн. Код повторяется? Пишите скоупы!
В общем, не одобряю подход
Роман Сохарев
@greabock
Mar 10 2015 19:27
@Nayjest ты вообще ничего не понял
Vitaliy Stepanenko
@Nayjest
Mar 10 2015 19:27
@greabock Ану ))
Роман Сохарев
@greabock
Mar 10 2015 19:28
слой репозиториев не для этого нужен, а для того чтобы абстагироваться от слоя orm
Vitaliy Stepanenko
@Nayjest
Mar 10 2015 19:28
Ну это да, тут полностью согласен

Просто начало статьи:

Очень надоедает, когда вам нужно писать одну и ту же вещь снова и снова. Когда вы чувствуете себя недовольным из-за повторения одних и тех же вещей, наступает время абстракции.

Создает впечатление, что это должно решить проблему копипаста

Роман Сохарев
@greabock
Mar 10 2015 19:30
он и решает проблему копипаста
Вертекс
@wertex
Mar 10 2015 19:31
Argument 1 passed to PostController::getView() must be an instance of Item, string given
я правильно понимаю, что аргумент не приходит?
Роман Сохарев
@greabock
Mar 10 2015 19:31
для различных репозиториев реализующихся посредством eloquent
slider23
@slider23
Mar 10 2015 19:31
@Nayjest скоупами не всегда можно сделать что-то
Vitaliy Stepanenko
@Nayjest
Mar 10 2015 19:32
@greabock решает, но только там, где есть еще какие-то хранилища кроме РСУБД
slider23
@slider23
Mar 10 2015 19:32
И у Laravel нет паттернов. Можно писать как хочешь, любыми паттернами. За это и любим.
Роман Сохарев
@greabock
Mar 10 2015 19:33
@wertex getView() ожидает Item, а получает строку
Vitaliy Stepanenko
@Nayjest
Mar 10 2015 19:33
@slider23 Весьма спорное утверждение по поводу отсутствия паттернов )
Роман Сохарев
@greabock
Mar 10 2015 19:33
@wertex прям английским языком написано
slider23
@slider23
Mar 10 2015 19:34
Там нет требований - "пишите в таком паттерне"
Вертекс
@wertex
Mar 10 2015 19:34
@greabock :)
те если я передаю "1" он считает что это строка ?
service/post/view/1
Роман Сохарев
@greabock
Mar 10 2015 19:34
@wertex тебе нужно почитать про model binding
slider23
@slider23
Mar 10 2015 19:36
Более того, Тейлор у себя в книге в одном месте написал - попробуйте писать вообще без моделей, и увидите, как внезапно преобразится ваше приложение.
LaravelButler

Приветствуем Вас, @vonarchimboldi, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )

Вертекс
@wertex
Mar 10 2015 19:36
@greabock прочту, спасибо за наводку
slider23
@slider23
Mar 10 2015 19:36
Парадоксальный совет, но он был дан, чтобы сломать в мозгу связь с MVC
Роман Сохарев
@greabock
Mar 10 2015 19:37
@slider23 у меня есть мысль, как писать простые приложения без контроллеров )
Вертекс
@wertex
Mar 10 2015 19:37
@wertex это же в обычных доках есть или где то на стороне искать ?
Роман Сохарев
@greabock
Mar 10 2015 19:38
@wertex ну может хотя бы попробуешь
гугл за спрос денег не берет
@wertex хотя судя по тому, что ты пишешь сам себе это были "мысли в слух" XD
slider23
@slider23
Mar 10 2015 20:31
@Rhincodon Сорри за наше раздолбайство, на .su возможность писать посты появится завтра, потерпи плиз :) Редактор будет, конечно, md. Возможно, прям из гиста можно будет брать.
Denis Isaychenko
@Rhincodon
Mar 10 2015 20:32
@slider23 да я не спешу никуда :) если по ссылке из gists можно будет добавлять, будет хорошо, удобно
Brezhnev Ivan
@vanchelo
Mar 10 2015 20:33
по ссылке из гиста?
slider23
@slider23
Mar 10 2015 20:34
ну а чего, у нас дергается по несколько сотен ссылок с пакаджиста каждый час, чего бы с гиста не подёргать.
Brezhnev Ivan
@vanchelo
Mar 10 2015 20:35
да можно и дергать)
Denis Isaychenko
@Rhincodon
Mar 10 2015 20:37
не, на самом деле имелось ввиду чтобы было быстрое добавление контента статьи из gist, то есть при добавлении я ввёл ссылку, md загрузился в блок редактора по ссылке. А не просто ссылку и он тянуть будет каждый раз при открытии статьи для просмотра.
чтобы я ctrl+c + ctrl + v не делал, хотя это такое :)
ссылку всё равно копировать то
Orel
@2byte
Mar 10 2015 20:38
Юзаете очереди sync ?
Orel
@2byte
Mar 10 2015 20:45
Пятерка хороша, но вот теперь, толи юзать команды, как это предлагается в доке, толи репозитории или может все вместе.
slider23
@slider23
Mar 10 2015 20:51
@Rhincodon я думал сделать периодическое подёргивание гиста кроном, чтобы сам гист непосредственно можно было редактировать, а на сайте отражались бы изменения. Потому что один раз импортить - так проще самом у ctrl-c ctrl-v сделать.
Just_Username
@Just-User
Mar 10 2015 20:51
привет всем. кто пользовался гугл каптча оригинальная цепляется только с онлайн сайту? если да то посоветуйте плиз пакет с гугл каптчей.
slider23
@slider23
Mar 10 2015 20:52
@2byte пиши как писал, зачем тебе эти команды с репозиториями, если без них обходишься ? :)
Brezhnev Ivan
@vanchelo
Mar 10 2015 20:54
@slider23 а ты уже на реакте что-то пишешь?
slider23
@slider23
Mar 10 2015 20:55
начал, но потом погрузился в выбор лучшей реализации flux и работа встала :)
Brezhnev Ivan
@vanchelo
Mar 10 2015 20:55
а как же ембер?
slider23
@slider23
Mar 10 2015 20:55
походу это все же reflux
На эмбере тоже буду писать, видимо. Есть задача.
Brezhnev Ivan
@vanchelo
Mar 10 2015 20:56
)))))
slider23
@slider23
Mar 10 2015 20:56
Просто что-то в последнее время жизнь подталкивает к фронтэнду
надо изучить все что там сейчас копошится
Brezhnev Ivan
@vanchelo
Mar 10 2015 20:56
метеор тогда уж)
slider23
@slider23
Mar 10 2015 20:57
это вещь-в-себе, это не гибко. Поэтому и ангуляр2 тоже мимо пролетает
Brezhnev Ivan
@vanchelo
Mar 10 2015 20:57
я анг2 еще не смотрел
slider23
@slider23
Mar 10 2015 20:57
Опыт Laravel показывает, что надо двигаться максимально близко к языку
Orel
@2byte
Mar 10 2015 20:57
@slider23 Так я юзал репозитории
slider23
@slider23
Mar 10 2015 20:57
А всякие DSL поверх него - это путь в тупик
Т.е. не кофе, а ES6
Не свой формат пакетов, а composer
Brezhnev Ivan
@vanchelo
Mar 10 2015 20:58
почему тупик?
slider23
@slider23
Mar 10 2015 20:59
ну практика показывает, что руда долбится лучше там, где больше народа
любой DSL, даже самый удобный - надо учить
Brezhnev Ivan
@vanchelo
Mar 10 2015 21:00
ясно)
учить надо
slider23
@slider23
Mar 10 2015 21:00
а язык уже все знают, его приходится знать
Brezhnev Ivan
@vanchelo
Mar 10 2015 21:00
а это ломки
slider23
@slider23
Mar 10 2015 21:01
Вообще, сегодня увидел офигительный доклад эмбер-евангелиста Листочкина про то, что все js-фреймворки скоро будут похожи друг на друга - http://www.youtube.com/watch?v=RgJMIbAB5Yg&t=3m28s
Все двигаются в одном направлении
Всё так.
Brezhnev Ivan
@vanchelo
Mar 10 2015 21:09
классно рассказывает)
Denis Isaychenko
@Rhincodon
Mar 10 2015 21:11
ага, мне нравится
Brezhnev Ivan
@vanchelo
Mar 10 2015 21:11
умный парень
Denis Isaychenko
@Rhincodon
Mar 10 2015 21:12
я его уже смотрел помню, он ещё не такие классные тогда презентации делал, про ember рассказывал, но не так атмосферно было как сейчас, презентация классная
slider23
@slider23
Mar 10 2015 21:17
с 12:42 :)
про lightweight
Brezhnev Ivan
@vanchelo
Mar 10 2015 21:22
ага, уже послушал
Alexey
@Butochnikov
Mar 10 2015 21:27
хорошо, что напомнили про это видео, забыл разместить в группах, годное видео... а вот workshop по реакту убрали, вот это досадно (
Kirill Nesmeyanov
@SerafimArts
Mar 10 2015 21:29
@slider23 считаешь ли ты аннотации DSL?
LaravelButler

Приветствуем Вас, @kirillz, в нашем дружном чате
В чате запрещена: реклама, спам, нецензурная лексика. Чат не место для оскорблений и выяснения отношений между участниками. За нарушение – Бан!

Русскоязычное сообщество Laravel
Самая свежая документация по Laravel 5
Документация по Laravel 4.2
Официальный сайт Laravel
Группа Вконтакте
А так же:
G+, Facebook, Twitter, GitHub

⇒ Перед тем как написать сообщение, пожалуйста, ознакомьтесь с разметкой Markdown ( Ctrl+Shift+M (Windows) Ctrl+Alt+M (Linux) Ctrl+Cmd+M (Mac) )