These are chat archives for LaravelRUS/chat

2nd
Aug 2015
Alexander
@bobrovskikh
Aug 02 2015 00:29

Может кто не спит.. Не пойму как сделать роут.
Есть роут - 'new/special' => 'SpecialController',

Мне нужен вот такой роут - new/special/{{$id}}

Добавляю в контроллер public function getIndex($id = null) но лара не видит путь

Denis Isaychenko
@Rhincodon
Aug 02 2015 00:37
Alexander
@bobrovskikh
Aug 02 2015 00:42
@Rhincodon спасибо!
Nikita Semenov
@chapt
Aug 02 2015 06:29
Привет, всем, нужна помощь, поставил Laravel 5 на убунту через композер, в конфиге указал нужное подключение к БД, но выполнение artisan migrate:install
выдает следующую фигню:
[PDOException]
SQLSTATE[28000] [1045] Access denied for user 'homestead'@'localhost' (usin
g password: YES)
в каком файле у laravel лежит это подключение к 'homestead'@'localhost' ? чтобы его от туда вырезать, или сделать ему юзера наоборот?
Alexander Egorov
@Amegatron
Aug 02 2015 06:36
@chapt .env.php
Nikita Semenov
@chapt
Aug 02 2015 06:40
@Amegatron благодарю
KupueIIIKo
@KupueIIIKo
Aug 02 2015 06:42
Доброе утро
Кстати вот такая интересная задачка) Есть основной контроллер API) рядом с ним лежат папки с названиеми методов) Например Users бла бла бла) Внутри пока пусто но я собираюсь ложить туда действия) То есть вызов проходист запросом method=users&action=register
Вот вопрос такой как из контроллера вызвать контроллер?
namespace xNotice\Http\Controllers\Users тлько добавляю сразу laravel ругается
Paul Klementyev
@klermonte
Aug 02 2015 08:30
@kupuelllko немного не по теме, но ты не смотрел в сторону REST? Роуты ларавел очень хорошо подготовлены для реализации рест апи
KupueIIIKo
@KupueIIIKo
Aug 02 2015 09:15
@klermonte Перелазия с kohana я тут замучался лаврушку изучать щас пробую Yii
@klermonte Проблема в том, что я хочу в своем городе проект поднять) и сделать мне каркас уже за 13 дней)
KupueIIIKo
@KupueIIIKo
Aug 02 2015 09:31
@klermonte Подумываю вообще просто написать на чисто пыхе апи)
Maxim
@Big-Shark
Aug 02 2015 09:59
@KupueIIIKo вы хотите сделать велосипед из машины, вопрос зачем?
4gekkman
@4gekkman
Aug 02 2015 10:15
@chapt Artisan-команды будут работать, только если их запускать через окно терминала гостя (убунты на хомстеад), а не хозяина (компа, где установлен хомстеад). Ну, и надо запускать в каталоге проекта, где установлен ларавел.
Paul Klementyev
@klermonte
Aug 02 2015 10:29
4chapt неа, все, что не связано с базой будет работать и с хоста
Если на нём конечно пхп есть)
NickPanda
@NickPanda
Aug 02 2015 11:14

Всем привет! Или я требуюу от eloquent слишком многого либо туплю......

class User extends Model {

    public function phone()
    {
        return $this->hasOne('App\Phone');
    }

}

Ставлю такую связь
Далее

$phone = User::find(1)->phone;

Этим я выбираю телефон пользователя
Хотя Сгенерированный SQL имеет такой вид:

select * from users where id = 1
select * from phones where user_id = 1

Я так понимаю можно выудить инфу о пользователи (его имя пароль и прочее)
$phone->id этим я получу id записи телефона

Так вот как можно выудить информацию о пользователе или нужен отдельный запрос?

Paul Klementyev
@klermonte
Aug 02 2015 11:27
@NickPanda
$user = User::find(1); // инфа о юзере
$phone = $user->phone; // объект телефона
NickPanda
@NickPanda
Aug 02 2015 11:29
@klermonte я правильно понимаю, что мы выполним запрос про юзера запишем, потом просто вытащим телефон(ы) и как следствие выолнится 2 запроса, но у меня будет и о том и о том инфа?)
Paul Klementyev
@klermonte
Aug 02 2015 11:30
@NickPanda или если хочешь одним запросом:
$userWithPhone = User::with('phone')->find(1);
@NickPanda ну да, юзер то никуда не денется после получения телефона, а во втором случае ты вообще все за раз вытащишь
NickPanda
@NickPanda
Aug 02 2015 11:32
@klermonte А такой, момент, например у пользователя аватарки лежат в отдельной таблице, как мне сделать так чтобы в одной колекции были и картинка и инфа о пользователе
чтобы можно бло прогнать в foreach и вывестия аватарку и имя пользователя
Paul Klementyev
@klermonte
Aug 02 2015 11:33
@NickPanda
$usersWithAvatars = User::with('avatar')->get();
конечно у тебя должен быть настроен соответствующий релейшн
pubic function avatar()
{
    return $this->hasOne('\App\Avatar');
}
@NickPanda на вот, почитай, там все это описано http://laravel.com/docs/5.1/eloquent-relationships
NickPanda
@NickPanda
Aug 02 2015 11:35
@klermonte ну по идее что с телефоном , что с авой принцип один, еще бы понять в каком месте писать условие where
Paul Klementyev
@klermonte
Aug 02 2015 11:36
в любом, до получения записей, т.е. до get() или paginate()
NickPanda
@NickPanda
Aug 02 2015 11:38

@klermonte

        foreach($userWithPhone as $book){
            dd($book);
        }

Он пишет, что true странно.. или я не правильно кручу колекцию?(

Paul Klementyev
@klermonte
Aug 02 2015 11:40
$userWithPhone не коллекция)) это одна модель
NickPanda
@NickPanda
Aug 02 2015 11:41
@klermonte ну да это модель User? с relations: array:1 [▼
Вопрос как надо прочитать этот кусок?
Paul Klementyev
@klermonte
Aug 02 2015 11:42
@NickPanda ну очевидно, что это список связей твоего объекта пользователя с другими елоквент моделями, в данном случае она одна - это телефон
NickPanda
@NickPanda
Aug 02 2015 11:51

@klermonte так кажется разобрался,

        foreach($usersWithAvatars as $book){
            echo $book->name;
            foreach($book->avatars as $avatar){
                echo $avatar->url;
            }
        }

ОН выводит имяользователя и адреса картинок
Такая схема будет пахать в blade же ?

Paul Klementyev
@klermonte
Aug 02 2015 11:57
куда денется) конечно будет)
JhaoDa
@jhaoda
Aug 02 2015 12:31
https://toster.ru/q/236862 и опять великие гуру поедали нам, что Ларавель вся на статике
Правда, уточнили, что статика там местами (sic!) не совсем статика
Байтораздирающее зрелище...
nnnikolay
@nnnikolay
Aug 02 2015 12:59
@jhaoda а что конкрето по ссылке тебя разодрало ?
JhaoDa
@jhaoda
Aug 02 2015 12:59
@nnnikolay т.е. тебя ничего не разодрало?
nnnikolay
@nnnikolay
Aug 02 2015 12:59
мы не в Одессе :)
вопросом на вопрос это как бы не вариант дискуссии:)
JhaoDa
@jhaoda
Aug 02 2015 13:00
@nnnikolay ну я вроде бы написал, о чем поведали гуру. Сарказм не распознал?
nnnikolay
@nnnikolay
Aug 02 2015 13:00
@jhaoda неет не распознал в чем сарказм ?
JhaoDa
@jhaoda
Aug 02 2015 13:01
«Гуру» видят paamayim nekudotayim — и всё, значит ларавель на статике
NickPanda
@NickPanda
Aug 02 2015 13:01
@klermonte да да работает, а как сделать чтобы вытащить юзера его аватар и его должности?
JhaoDa
@jhaoda
Aug 02 2015 13:01
Копнуть глубже и понять, что это не статика, «гуру», видимо, не могут...
Paul Klementyev
@klermonte
Aug 02 2015 13:02
@NickPanda в with передай массив
nnnikolay
@nnnikolay
Aug 02 2015 13:02
ну он же вроде описал это не ?
я так понимаю под гурой ты понимаешь некоего давида по ссылке ?
Paul Klementyev
@klermonte
Aug 02 2015 13:03
@NickPanda
User::with(['avatar', 'position'])->get();
nnnikolay
@nnnikolay
Aug 02 2015 13:03
@jhaoda Статика в ларе, она существует как обёртка, но не как реализация, во многих местах в отличии от Yii
это то что он написал.. так вроде ж правду написал или я чего то не догоняю.. ?
но в Yii как минимум до 2й версии вроде бы тоже писали User::model()->.. которая тоже как бы была "оберткой"
В общем не знаю чего ты завелся так :) ну да ладно )
JhaoDa
@jhaoda
Aug 02 2015 13:05
@nnnikolay ты считаешь, что вопрошающий поймет, что подразумевается под «обёртка, а не реализация»?
Paul Klementyev
@klermonte
Aug 02 2015 13:11
@jhaoda соглашусь с @nnnikolay, в ларавел действительно статика чисто для удобства в основном, те же "фасады", в самом фреймворке они не используются, все только через контейнер
JhaoDa
@jhaoda
Aug 02 2015 13:11
@klermonte я разве спорю? Я говорю, что в ответе на вопрос это не объяснено нормально
Paul Klementyev
@klermonte
Aug 02 2015 13:12
хз, вроде все понятно, да и скорее всего чел не ругал фреймворк, а использование статических методов, и аргументировал почему
NickPanda
@NickPanda
Aug 02 2015 13:13
@klermonte да да спасибо, вроде пока понял, что и как реализовать) и уже реализовал через 3 таблицу много ко многому
Такой вопрос, может ли связующая таблица иметь 3 столбца и связывать 3 таблицы?
nnnikolay
@nnnikolay
Aug 02 2015 13:13
@jhaoda я понял тебя.. возможно ты прав, возможно и не поймет, но если он не пймет то и отвечать ему безсмысленно, ему еще нужно много пройти, но не ответить тоже не красиво было :) вот чел и ответил..
Paul Klementyev
@klermonte
Aug 02 2015 13:14
@NickPanda посмотри в сторону morphMany
NickPanda
@NickPanda
Aug 02 2015 13:15
@klermonte ну я пока в качесстве теста сделал user_phone belongsToMany
А насчет можно ли вообще на уровне БД связывать 1 таблицей 3 таблицы
например user_post_company
morphMany это фишка связывает лишь 2 таблицы одной, а я имею в виду 1 таблица которая связывает 3
Annywebart
@Annywebart
Aug 02 2015 13:22
Привет всем! Работаю с L4. Делаю загрузку изображений через tinymce. Изображения загружаю ajax-ом, помещаю в папку с id статьи (/uploads/pages/{id}). При редактировании все хорошо, но при создании новой статьи взникает проблема, т.к. id статьи не известен. Подскажите, пожалуйста, как решить эту проблему.
JhaoDa
@jhaoda
Aug 02 2015 13:23
@Annywebart сначала создать статью-черновик
Или грузить во временную директорию, а потом линковать к статье и перемещать
Выбирай, что больше нравится
Annywebart
@Annywebart
Aug 02 2015 13:25
а про черновик можно подробнее?
JhaoDa
@jhaoda
Aug 02 2015 13:25
@Annywebart что там подробней?
Создай новую статью, выстави статус «черновик». Всё.
Annywebart
@Annywebart
Aug 02 2015 13:26
а, ок, спасибо
а как быть с удалением изображений с сервера, если в статье изображение было удалено? каждый раз при изменении статьи проверять, не удалено ли изображение из текста, и, если удалено, удалять его с сервера?
JhaoDa
@jhaoda
Aug 02 2015 13:28
@Annywebart а что, нельзя отловить факт удаления картинки из текста?
События там и всё такое...
Annywebart
@Annywebart
Aug 02 2015 13:29
в самом редакторе?
ок, спасибо за мысль
NickPanda
@NickPanda
Aug 02 2015 14:23
Народ, можно ли сделать таблицу company_post_user и хранить в ней id компаний должностей и пользователя?
И как это будет работать в eloquent
Если брать belongsToMany, он берет лишь 2 таблицы(
This message was deleted
Oleg Melnik
@olegmelnik
Aug 02 2015 14:37
Мужики, здесь есть боги oauth2 ?
Ну или хотя бы те, кто разбираются в grant types?
Maxim
@Big-Shark
Aug 02 2015 14:52
@olezko46 а че с ними?
@NickPanda 1) МОЖНО 2) хрен его знает
Oleg Melnik
@olegmelnik
Aug 02 2015 14:58
@Big-Shark я не могу нужный grant type выбрать. Можешь страницу в ВК кинуть, я в ЛС напишу?
JhaoDa
@jhaoda
Aug 02 2015 14:59
@olezko46 а что, здесь уже не модно спрашивать?
Maxim
@Big-Shark
Aug 02 2015 14:59
@olezko46 лс закрыты, а в друзья я тебя добавлять не буду) а в чем проблемма с гранд тайп?
Oleg Melnik
@olegmelnik
Aug 02 2015 15:02
@Big-Shark на самом деле я тупо не понимаю спецификацию. Нужна отравка мыла и пороля, в ответ получение access_token и refresh_token
@Big-Shark https://github.com/lucadegasperi/oauth2-server-laravel/wiki/Choosing-a-Grant что из этого всего выбирать я хз
JhaoDa
@jhaoda
Aug 02 2015 15:03
@olezko46 тебе нужен password
Maxim
@Big-Shark
Aug 02 2015 15:03
@olezko46 тебе оаут сервер или оаут клиент нужен?
Oleg Melnik
@olegmelnik
Aug 02 2015 15:04
@Big-Shark эммм... А в чем различия?
Maxim
@Big-Shark
Aug 02 2015 15:04
@jhaoda стоп машина, если он хочет получить токер, но это клиент а не сервер
JhaoDa
@jhaoda
Aug 02 2015 15:04
@Big-Shark а где он про сервер сказал?
Maxim
@Big-Shark
Aug 02 2015 15:05
@olezko46 ты присоеденяешься к серверу типа вк, гитхаба, мейла и прочее, или к тебе буду присоеденятся?
JhaoDa
@jhaoda
Aug 02 2015 15:05
@Big-Shark ты сам как думаешь, если надо отправить логин-мыло, а получить токен, то что ему нужно?:)
Oleg Melnik
@olegmelnik
Aug 02 2015 15:05
@Big-Shark у меня сервак и к нему клиент цепляетсч
@Big-Shark ios приложение если это так важно
@Big-Shark социалки не нужны
JhaoDa
@jhaoda
Aug 02 2015 15:06
@olezko46 password тебе нужен
Повторить ещё раз?
Oleg Melnik
@olegmelnik
Aug 02 2015 15:07
@jhaoda я уже два раза прочитал это
JhaoDa
@jhaoda
Aug 02 2015 15:07
@olezko46 так пробуй давай :)
Oleg Melnik
@olegmelnik
Aug 02 2015 15:07
@jhaoda а как тогда прикручивать к нему рефреш? Это же два разных типа
JhaoDa
@jhaoda
Aug 02 2015 15:08
@olezko46 никак. Сначала авторизуешься, потом, если надо, рефрешишь токен
Oleg Melnik
@olegmelnik
Aug 02 2015 15:09
@jhaoda то есть прямо на сервере обновляю время сессии ?
Maxim
@Big-Shark
Aug 02 2015 15:09
там нет сессии
JhaoDa
@jhaoda
Aug 02 2015 15:09
@olezko46 т.е. сначала запрос с password, потом, если надо, запрос с refresh_token
Oleg Melnik
@olegmelnik
Aug 02 2015 15:10
@jhaoda два разных типа использовать? Что за нах?
JhaoDa
@jhaoda
Aug 02 2015 15:10
@olezko46 я не понимаю, зачем тебе сразу токен обновлять?
Ты авторизовался и получил токен, у него срок жизни, например, час. И ты сразу же хочешь его обновить. Нахера?
Maxim
@Big-Shark
Aug 02 2015 15:11
@jhaoda а вдруг он уже пропал)
Oleg Melnik
@olegmelnik
Aug 02 2015 15:12
@jhaoda сейчас время жизни токена состовляет 3600 ttl
Maxim
@Big-Shark
Aug 02 2015 15:12
@jhaoda как продукты в супер маркете, ты их только купил, принес домой, а у них уже срок годности истек.
Oleg Melnik
@olegmelnik
Aug 02 2015 15:12
@jhaoda А если умер токен? Что делать дальше то?
JhaoDa
@jhaoda
Aug 02 2015 15:12
@olezko46 что за еденица измерения такая — ttl?
Oleg Melnik
@olegmelnik
Aug 02 2015 15:12
@jhaoda 'access_token_ttl' => 3600
JhaoDa
@jhaoda
Aug 02 2015 15:13
@olezko46 а единица измерения?
Метры? Люксы?
Oleg Melnik
@olegmelnik
Aug 02 2015 15:13
@jhaoda хороший вопрос
Maxim
@Big-Shark
Aug 02 2015 15:13
секунл)
Oleg Melnik
@olegmelnik
Aug 02 2015 15:13
@jhaoda я сам хз
Maxim
@Big-Shark
Aug 02 2015 15:13
1 час
JhaoDa
@jhaoda
Aug 02 2015 15:13
@olezko46 капец, парень
Может тебе основы подучить, для начала?
Oleg Melnik
@olegmelnik
Aug 02 2015 15:14
@jhaoda да я мало чего понимаю в вебе
JhaoDa
@jhaoda
Aug 02 2015 15:14
А то в чем время жизни измеряется — не знаешь, сессии в oauth приплёл...
Oleg Melnik
@olegmelnik
Aug 02 2015 15:14
@jhaoda суть не в этом
@jhaoda если токен умер, то что дальше?
@jhaoda опять на авторизацию перекидывать?
JhaoDa
@jhaoda
Aug 02 2015 15:15
@olezko46 его надо обновить
Oleg Melnik
@olegmelnik
Aug 02 2015 15:15
@jhaoda воот. то есть нужен рефреш токен? Я правильно все понимаю?
JhaoDa
@jhaoda
Aug 02 2015 15:15
Я тебе кинул ссылку, там расписаны разные grant_type и примеры запросов
Andrew Zhuravchak
@Retsediv
Aug 02 2015 18:36
Привет, ребят. Разбираюсь с IOC и возникла пара вопросов.
Если я все правильно понимаю, то работант он примерно так...
  1. В контроллере мы как аргумент получаем обьект класса интерфейса
  2. В сервис контейнере мы связываем етот интерфейс с классом
или как? попрошу объяснить как-то на пальцах, а то тяжеловато въехать в это...
Можете привести пример работы, а то тот, который я сделал не работает?
Очень буду благодарен
Andrew Zhuravchak
@Retsediv
Aug 02 2015 18:40
@lagun4ik читал
Ivan Lagunovsky
@lagun4ik
Aug 02 2015 18:40
@Retsediv мде
Andrew Zhuravchak
@Retsediv
Aug 02 2015 18:43
@lagun4ik понимаю, что вопросы после прочтения статьи должны были пропасть, но все же...помогите с вопросами
nnnikolay
@nnnikolay
Aug 02 2015 18:53
@Retsediv
  1. да
  2. в сервис провайдере - да
Uladimir Sadkou
@GaintVlad
Aug 02 2015 18:59
Создал базу данных MySQl, Настроил соединение. Как быстро проверить соединение, а то стартовые миграции users / reset_password не накатываются
VitaliiSestrenskyi
@VitaliiSestrenskyi
Aug 02 2015 19:00
Всем привет. Подскажите как решить проблему.
Есть код "2517-07-15" в бд. Есть битый прайс с кодом "15-07-1725" . По-сути это один товар, только проблема с кодом в прайсе я когда его загружаю у меня создается еще один товар. Этого не должно быть. Нужно сделать из кода "15-07-1725" -> "2517-07-15".
Andrew Zhuravchak
@Retsediv
Aug 02 2015 19:00
@nnnikolay
Спасибо, более менее разобрался. Теперь еще вопрос, все привязки лучше делать в одном сервис провайдере, группировать или для каждой связки другой провайдер?
Paul Klementyev
@klermonte
Aug 02 2015 19:05
@Retsediv группируй по пакетам, связанные классы регистрируй в одном сервис провайдере
Andrew Zhuravchak
@Retsediv
Aug 02 2015 19:07
@klermonte благодарю
NickPanda
@NickPanda
Aug 02 2015 19:50

Народ, Хэлп. Кто работает с SSH от laracolective l5.1?
Установил как написано!
Но если

SSH::run(array(
    'cd /var/www',
    'git pull origin master',
));

Выполнить в файлу route (функцией замыкания), то все отлично,
Если же тоже самое выполнить в контроллере он скажет
FatalErrorException in Controller_Test.php line 54: Class 'App\Http\Controllers\SSH' not found
В чем может быть проблема?
Также если прописать use Collective\Remote\RemoteFacade все равно ошибка......
А вот если написать вместо SSH - RemoteFacade ? то он пашет, почему он альяс не видит или в чем у него беда то?

Paul Klementyev
@klermonte
Aug 02 2015 20:01
Ну потому что ты прописываешь алиас для ремоут а не для ssh
NickPanda
@NickPanda
Aug 02 2015 20:01
@klermonte ну у меня в апе есть альяс
'SSH' => Collective\Remote\RemoteFacade::class,
И он этого не видит
Paul Klementyev
@klermonte
Aug 02 2015 20:03
Это не то, это ты фасад зарегал, его ж ещё и в файле заюзать надо, хотя бы так use SSH;
NickPanda
@NickPanda
Aug 02 2015 20:04
@klermonte а как его еще можно?)
@klermonte просто например альяс Auth регается так
use Illuminate\Support\Facades\Auth;
Paul Klementyev
@klermonte
Aug 02 2015 20:05
Ну так как у тебя имя алиаса не совпадает с именем класса фасада, то никак
NickPanda
@NickPanda
Aug 02 2015 20:06
мм, ясно короче это такой минут выходит

Ээх, шторм все равно ругается что обидно)
Хотя он намногое ругается, не стал ставить ide_helper

Я кстати прав, что когда стоит ide_helpe? то если сделать
use DB (ели не ошибаюсь сошлется на ide_helper
То если удалить этот файлик то все не будет работать?

Paul Klementyev
@klermonte
Aug 02 2015 20:08
На то он и иде хелпер, что только для подсветки и определения типов работать, в работе приложения он не участвует
NickPanda
@NickPanda
Aug 02 2015 20:09
@klermonte странно бывало что если сослаться на него, то появится зависемость)
nnnikolay
@nnnikolay
Aug 02 2015 20:12
подскажите кто нить Как мы попадаем в Facade при вызове Validator::extend ?
Paul Klementyev
@klermonte
Aug 02 2015 20:12
Что значит сослаться?
nnnikolay
@nnnikolay
Aug 02 2015 20:12
Validator не реализоует такой метод, трейта тоже нет .. ща проверю __call...
Paul Klementyev
@klermonte
Aug 02 2015 20:13
@nnnikolay почитай статью про айок на laravel.su там вроде про это рассказано
NickPanda
@NickPanda
Aug 02 2015 20:13
написать use DB и я помню щелкал он открывал файлик этот
Paul Klementyev
@klermonte
Aug 02 2015 20:13
Так это только иде так воспринимает, реальный код фасад сразу юзает
nnnikolay
@nnnikolay
Aug 02 2015 20:14
@klermonte не понял, я просто дебажу код и смотрю что иде мне показывает следующий степ после ::extend это Facade.php@__callStatic
NickPanda
@NickPanda
Aug 02 2015 20:15
@klermonte тогда ладно......спасибо
Paul Klementyev
@klermonte
Aug 02 2015 20:16
Этот метод не в валидатора, а фабрики, и фасад ссылается так-то на фабрику https://github.com/laravel/framework/blob/5.1/src/Illuminate/Validation/Factory.php
nnnikolay
@nnnikolay
Aug 02 2015 20:16
@nnnikolay т.е. из-за этого я попадаю туда
class_alias('Illuminate\Support\Facades\Validator', 'Validator');
от же жжесть )
Paul Klementyev
@klermonte
Aug 02 2015 20:18
Да ладно те, все ж просто)
nnnikolay
@nnnikolay
Aug 02 2015 20:18
ну да когда видишь всю картину наверняка.. но почему так ? вот это не понятно :) можно ж проще.. в чем профит ?
Paul Klementyev
@klermonte
Aug 02 2015 20:19
Почитай статью про айок, я ж те сказал, очень многое станет понятным
nnnikolay
@nnnikolay
Aug 02 2015 20:19
@klermonte я знаю что такое IoC и читал ту статью ранее, дело не в IoC совсем
причем он тут
Paul Klementyev
@klermonte
Aug 02 2015 20:20
Ещё как в нём)
Фасады это ацессоры к элементам айока
nnnikolay
@nnnikolay
Aug 02 2015 20:20
ну так он тут не причем сам по себе ведь верно ?
я попадаю в фасад не потому что, что-то забиндино в контейнере
Paul Klementyev
@klermonte
Aug 02 2015 20:21
И если бы ты хоть чуточку копнул, то увидел бы, что забиндено на validator
nnnikolay
@nnnikolay
Aug 02 2015 20:21
а потому что есть класс алиас
не забиндино еще раз тебе говорю
код тебе показал
выше
Paul Klementyev
@klermonte
Aug 02 2015 20:21
Чей это код?
nnnikolay
@nnnikolay
Aug 02 2015 20:21
люмена
метод withFacades
Paul Klementyev
@klermonte
Aug 02 2015 20:22
Оз господи, тут я умолкаю, ибо с ним не работал, я то думал ты в ларе:D
nnnikolay
@nnnikolay
Aug 02 2015 20:22
я тоже думал что я в ларе :-)
а что в ней нет такого ? ))
Paul Klementyev
@klermonte
Aug 02 2015 20:22
Ну короче, экстенд это метод фабрики, юзай её
nnnikolay
@nnnikolay
Aug 02 2015 20:23
да я вижу все
было не понятно как туда попадаю это не очевидно и когда где-то в коде есть class_alias то это не совсем очевидный ход )
я тоже в начале проверил биндинги но нет же
прошла неделя как я знаком с ларавелом через люмен и пока меня коробит )))
буду надеяться что дальше станет привычнее что ли)
Paul Klementyev
@klermonte
Aug 02 2015 20:24
не в том порядке изучаешь:D
надо было начать с ларавел)
хотя не исключено, что коробить стало бы еще больше:D
nnnikolay
@nnnikolay
Aug 02 2015 20:24
так я ж не для себя ) а для компании )) нужно было АПИ проект на чем-то начать
вот все думаю как бы мне наколоть ларавел что б заиметь свой валидатор т.е. что б написать в правиле
field => 'callback{class#method}....'
и он бы в него все параметры, атрибут и значение передал
есть идеи ?
причем class#method каждый раз могут быть разные.. по этому не хочу в провайдере регистрировать тонну правил
Paul Klementyev
@klermonte
Aug 02 2015 20:29
Тебе, если не ошибаюсь, уже предлагали расширить валидатор и зарегать вместо стандартного свой, что благодаря тому же IoC делается очень легко)
nnnikolay
@nnnikolay
Aug 02 2015 20:30
нет это я сам предлогал )
если под словом расширить ты не имеешь ввиду extend
::extend
Paul Klementyev
@klermonte
Aug 02 2015 20:31
нет, я имею в виду унаследоваться и переопределить нужные тебе методы
extractRules там и еще много чего
nnnikolay
@nnnikolay
Aug 02 2015 20:32
да это я сам и предлагал, а мне предложили расширить его через ::extend..
но вот теперь я думаю если я его переопределю и да перегружу некоторые методы..
мне для этого нужно его зарегестрировать в системе.. но если эта сволочь делает
class_alias('Illuminate\Support\Facades\Validator', 'Validator');
то мне нафиг эту строчку нуно удалять ) и регить свой верно ведь
Paul Klementyev
@klermonte
Aug 02 2015 20:34
не, не удаляй, я ж говорю, фасад это всего лишь ацессор для элемента в контейнере, тебе надо под именем, которое вызывается в этом фасаде зарегать свой класс
ты знаешь где в люмене набивается контейнер? Ну в ларе это в сервис провайдерах делается, а в люмене?
nnnikolay
@nnnikolay
Aug 02 2015 20:35
в bootstrap/app.php
либо в AppServiceProvider.php
Paul Klementyev
@klermonte
Aug 02 2015 20:36
а, ну типа та же схема, ну тогда в AppServiceProvider регаешь под именем интерфейса этой валидации свой клас
nnnikolay
@nnnikolay
Aug 02 2015 20:37
"этой валидации" это что ?
ты имеешь ввиду класс своего валидатора зарегить в AppServiceProvider.php ?
Paul Klementyev
@klermonte
Aug 02 2015 20:38
я думал, что там по имени контракта регается, я ошибся, там просто по строчке validator
        $this->app->singleton('validator', function ($app) {
            $validator = new Factory($app['translator'], $app);
            // The validation presence verifier is responsible for determining the existence
            // of values in a given data collection, typically a relational database or
            // other persistent data stores. And it is used to check for uniqueness.
            if (isset($app['validation.presence'])) {
                $validator->setPresenceVerifier($app['validation.presence']);
            }
            return $validator;
        });
ну это в ларавел
nnnikolay
@nnnikolay
Aug 02 2015 20:38
да он зареган вот так
/**
 * Get the registered name of the component.
 *
 * @return string
 */
protected static function getFacadeAccessor()
{
    return 'validator';
}
Paul Klementyev
@klermonte
Aug 02 2015 20:39
это в фасаде сказано, какой элемент из ioc дергать, а сам элемент зареган как я тебе показал
nnnikolay
@nnnikolay
Aug 02 2015 20:39
верно, я и имел в виду что к нему потом так обращаются
ты прав, зареган он так как ты показал
Paul Klementyev
@klermonte
Aug 02 2015 20:39
так что в Ioc просто переопределяешь validator и все
nnnikolay
@nnnikolay
Aug 02 2015 20:41
так а где мне его регать под таким именем в AppServiceProvider ? потому как в вендоре я менять ничего хочу )
Paul Klementyev
@klermonte
Aug 02 2015 20:43
Регаешь под этим же именем - "validator" только убедись, что делаешь это после того, как это делает нативный код. Ну создай у себя в приложении папку Validation и в ней нафигачь свою фабрику со своим валидатором
ну можешь еще блэк джек и путан накидать
а в провайдере есть метод register() вот в нем
nnnikolay
@nnnikolay
Aug 02 2015 20:47
и унаследовать его от Illuminate\Validation\Validator или Illuminate\Support\Facades\Validator ?
Paul Klementyev
@klermonte
Aug 02 2015 20:52
если под "его" ты имеешь в виду свою фабрику и свой валидатор, то да)
ой не, про второй класс забудь, че ты все привязался к этому фасаду
еще раз, он всего лишь завязан на "validator" из контейнера, если мы подменим этот элемент, то ничего менять в фасаде не придется
nnnikolay
@nnnikolay
Aug 02 2015 20:54
ща попробую изобразить
nnnikolay
@nnnikolay
Aug 02 2015 21:09
похоже люмен регит свой валидатор позже
не могу понять пока ... я регд свой вот так
$this->app->singleton('validator', 'FQCN');
на момент регистрации моего валидатора в контейнере походу еще нет системного
https://www.dropbox.com/s/zll9aamliwslhrk/Screenshot%202015-08-02%2023.11.27.png?dl=0
и вот
https://www.dropbox.com/s/2swl0wzaxw1gsbf/Screenshot%202015-08-02%2023.13.16.png?dl=0
Paul Klementyev
@klermonte
Aug 02 2015 21:15
хм, а вобще он есть в контейнере? ну допустим где-нибудь в экшене контроллера?
nnnikolay
@nnnikolay
Aug 02 2015 21:15
ща гляну
хм.. а как мне его в экшене посмотреть ?
$this->app в контроллере нет
как-то через фасад наверно ж можно к контейнеру обратиться, app:: что то ? app::make ?
Paul Klementyev
@klermonte
Aug 02 2015 21:20
как зависимость укажи myAction(App $app)
nnnikolay
@nnnikolay
Aug 02 2015 21:21
да, хорошая мысль
да в экшене уже системный
Paul Klementyev
@klermonte
Aug 02 2015 21:24
а, слух, а есть в люмене как в ларавел список сервис провайдеров подключаемых в app конфиге?
nnnikolay
@nnnikolay
Aug 02 2015 21:26
конфига нет :) я имею ввиду папки конфиг вообще нет
но вроде бы можно сделать я где-то встречал
Paul Klementyev
@klermonte
Aug 02 2015 21:27
о, еще мысль, проверь, есть ли он в методе boot() сервис провайдера, этот метод вроде после всего выполняется
nnnikolay
@nnnikolay
Aug 02 2015 21:28
сейчас посмотрю
nnnikolay
@nnnikolay
Aug 02 2015 21:39
получилось
через ж правда
ну что ж Ларавел такая открытая система для изменений что я просто нимагу
вот так вот получилось только
class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        Validator::resolver(function($translator, $data, $rules, $messages)
        {
            return new CustomValidator($translator, $data, $rules, $messages);
        });
    }
т.е. получаеся перебить его не возможно, зато можно подсунуть при резолвинге
ну конечно это самый быстрый фрейм кто ж спорит :(
Paul Klementyev
@klermonte
Aug 02 2015 21:50
о даже как) ты крут)
это действительно правильный способ зарегать свой валидатор, гораздо правильнее переопределения фабрики) что ж, впредь будем знать)
спасибо за исследование)
nnnikolay
@nnnikolay
Aug 02 2015 21:55
ох уж не знаю правильнее ли это :-) мне кажется это все совсем не очевидно и требует не малых усилий, но возможно это мой уровень просто такой низкий по сравнению товарищем Тэйлором
просто "переопределение фабрики" это явное очевидное решение в "открытой" системе. Вот то что ты видишь выше как по мне хак :)
4gekkman
@4gekkman
Aug 02 2015 22:42
Доброй ночи не спящим
Конечно, вопрос не по теме чата, но в чём фишка вордпресса, и зачем он вообще может понадобиться нам?
4gekkman
@4gekkman
Aug 02 2015 22:48
Можно ли как-то использовать его функционал в приложении laravel? Или же, смысла нет.
Я правильно понимаю, что вордпресс и ларавел, это как велосипед и самолёт?
SekToRCoM
@SekToRCoM
Aug 02 2015 22:58

Доброй ночи. Живые есть? Создаю свой новостной движок, решил по-работать с категориями и на логику сделал такой вывод новостей в корневой категории:

public static function category($name)
    {
        $category = category::where('url', '=', $name)->first();
        $publishing = publishing::where('category', '=', $category->name)->orderBy('id', 'desc')->paginate(8);

        $category = category::where('locate', '=', $category->id)->get();
        if ($category != "[]")
        {
            foreach ($category as $cat) {
                $pub = publishing::where('id', '=', $cat->id)->orderBy('id', 'desc')->get();
                //$publishing .= $pub;
            }
        }

        return $publishing;
    }

Так вот, там где я прикрыл код, должно быть добавление данных в тот массив. Как такое организовать?

Либо как вообще оптимизировать этот код?
4gekkman
@4gekkman
Aug 02 2015 23:02
А что надо в итоге получить?
SekToRCoM
@SekToRCoM
Aug 02 2015 23:03
@4gekkman ну, публикации.. В нормальном виде, чтоб уже можно было их вывести.
4gekkman
@4gekkman
Aug 02 2015 23:03
Соответствующие одной категории?
SekToRCoM
@SekToRCoM
Aug 02 2015 23:06
Получается. Сначала мы рассматриваем основную категорию и находим в ней те публикации, в которых указано название этой (основной) категории. После чего мы осуществляем поиск "подкатегорий", в которых в колонке "locate" укахан ID их основной категории. Далее, мы должны найти публикации во всех подкатегориях, после чего взять публикации и основной категории и вывести в нормальном виде с сортировкой по убыванию.
4gekkman
@4gekkman
Aug 02 2015 23:11
А смысл подобной операции?
SekToRCoM
@SekToRCoM
Aug 02 2015 23:12
@4gekkman Вывод в основной категории ВСЕХ новостей по ее подкатегориям и ее.
Ниразу не работали с CMS?
Там, когда заходишь в категорию, отображаются все публикации, добавленные в эту категорию и ее подкатегории.
4gekkman
@4gekkman
Aug 02 2015 23:13
Просто как-то всё запутанно. Чувствуется, что можно как-то оптимизировать ту часть, что связана с БД
SekToRCoM
@SekToRCoM
Aug 02 2015 23:14
@4gekkman Возможно, но тогда придется добавить еще 2-3 колонки в БД.
4gekkman
@4gekkman
Aug 02 2015 23:14
А категории и подкатегории в одной таблице лежат?
SekToRCoM
@SekToRCoM
Aug 02 2015 23:14
К примеру, указать id основной категории у каждой новости.
Да, в одной.
4gekkman
@4gekkman
Aug 02 2015 23:14
Надо положить в разные. Смысл их в одной хранить?
Это же нонсенс )
SekToRCoM
@SekToRCoM
Aug 02 2015 23:15
А смысл в разных?
4gekkman
@4gekkman
Aug 02 2015 23:15
Так будет удобно использовать связи между таблицами.
SekToRCoM
@SekToRCoM
Aug 02 2015 23:15
У меня не так их и много, 10 максимум.
А не проще ли держдать id родителя в колонке, а не в отдельной таблице?
4gekkman
@4gekkman
Aug 02 2015 23:16
Допустим, получить коллекцию всех подкатегорий для категории можно будет так:
$subcats = $cat->subcuts;
А получить коллекцию всех публикаций для $subcats можно будет так:
$pubs = $subcats->pubs;
Согласитесь, это покороче, чем приведённый вами выше код
И поудобнее
SekToRCoM
@SekToRCoM
Aug 02 2015 23:18
Да, короче. Значит, я мало еще знаю.
4gekkman
@4gekkman
Aug 02 2015 23:18
Посмотрите про связи между таблицами в документации ларавел
Тема сложная, но она стоит того, чтобы её освоить
SekToRCoM
@SekToRCoM
Aug 02 2015 23:19
А разве не требуется постоянно обращаться к модели? $pubs = $subcats->pubs;
4gekkman
@4gekkman
Aug 02 2015 23:19
В смысле
Для чего?
SekToRCoM
@SekToRCoM
Aug 02 2015 23:20
Ну, для обычного получение, к примеру, название категории:
$category = category::where('url', '=', $name)->first();
return $category->name;
4gekkman
@4gekkman
Aug 02 2015 23:21
Ну, в примере выше, pubs - это как раз таки связь
Её можно применять и к коллекциям
SekToRCoM
@SekToRCoM
Aug 02 2015 23:23
Эх, не понял всё равно.
4gekkman
@4gekkman
Aug 02 2015 23:25
Если вкратце, то в классе-модели можно определять так называемые связи. Это программная эмуляция связей между таблицами (какие они бывают в sql).
По сути, связь - это просто метод в классе-модели
И если нам нужно получить все публикации для указанной категрии, тут нам помогает связь
А если у нас не 1, а целая коллекция категорий? То можно применить связь прямо к коллекции, и получить все публикации всех категорий в коллекции.
В общем, я ж говорю, тема со связями головоломная
Придётся поломать голову пару вечеров, чтобы вкуритьт
SekToRCoM
@SekToRCoM
Aug 02 2015 23:27
@4gekkman без наглядного примера трудно понять, что и как. Я действую обычными способами, ломая ноги, как меня обучали в самых первых видео-уроках по Ларе.
4gekkman
@4gekkman
Aug 02 2015 23:28
А давно используете ларавел?
SekToRCoM
@SekToRCoM
Aug 02 2015 23:28
Месяца 3
4gekkman
@4gekkman
Aug 02 2015 23:29
Тогда, пока делайте так, как получается, и накапливайте практический опыт
SekToRCoM
@SekToRCoM
Aug 02 2015 23:29
Вообще, я перешел на него из-за удобной связки "шаблонизатор+код".
И уже 4-5 проект, который я делаю для себя, работает через "сломанные ноги".
4gekkman
@4gekkman
Aug 02 2015 23:30
Изучите документацию по ларавел 5, пропускайте пока сложные и малопонятные технологии
SekToRCoM
@SekToRCoM
Aug 02 2015 23:30
Я изучал и очень много :)
4gekkman
@4gekkman
Aug 02 2015 23:31
А когда выйдет ларавел 6, у вас уже будет практический опыт. Изучите заново его документацию, и постарайтесь задействовать в своей работе все новейшие, актуальные технологии, которые он принесёт, и которые были разработаны ранее
SekToRCoM
@SekToRCoM
Aug 02 2015 23:32
Как по мне, так работа крупных сайтов только связана с Базой данных, откуда идут данные и приходят.
Остальное делает javascript, без него уже никуда.
4gekkman
@4gekkman
Aug 02 2015 23:33
Тут фишка в чём. Пока нет некой критической массы практического опыта использования ларавел, затруднительно понять все без исключения технологии, описанные в документации. Поэтому начинающим следует использовать лишь то, что они понимает, и что у них получается, а остальное пока отложить. Примерно в течение года. А потом, когда выйдет новая версия, совершить "технологический рывок"
SekToRCoM
@SekToRCoM
Aug 02 2015 23:34
Возможно...
4gekkman
@4gekkman
Aug 02 2015 23:34
Конечно, если использовали другие фреймворки ранее, то намного проще и с ларавел работать. А мой совет выше для тех, кто ранее не использовал подобные фреймворки
По крайней мере, мой путь пролегал именно в таком русле
SekToRCoM
@SekToRCoM
Aug 02 2015 23:35
Я использовал обычный PHP, и то, в течении недели :D
4gekkman
@4gekkman
Aug 02 2015 23:35
А javascript хорошо знаете?
SekToRCoM
@SekToRCoM
Aug 02 2015 23:35
Нет, начал с AJAX'ом работать.
4gekkman
@4gekkman
Aug 02 2015 23:36
Хорошее знание JS, конечно, необходимо для веб разработки (если заниматься и бэкендом, и фронтендом)
Могу посоветовать 2 источника, по которым я обучался, это сайт Ильи Кантора learn.javacript.ru, а также видео курс от Sorax'а на youtube. Изучать следует в таком порядке: сайт Ильи -> видео курс Sorax'a -> снова сайт Ильи.
SekToRCoM
@SekToRCoM
Aug 02 2015 23:38
Спасибо.
Сайт не работает.
4gekkman
@4gekkman
Aug 02 2015 23:39
Там опечатка, вот правильный адрес: learn.javascript.ru
У Ильи в учебники есть один важный просчёт. Он сообщает о том, что javascript - не объектно-ориентированный, а функционально-ориентированный язык лишь в конце учебника. А без этого понять многие вещи затруднительно, этот факт заставил меня изрядно поломать голову, пока истина не открылась в 3-й части учебника )
Если будете по-серьёзному изучать, эта инфа сэкономит вам уйму времени
Ну, а по срокам, у меня ушло 8 месяцев на то, чтобы прилично освоить js с нуля, так что тут придётся запастись терпением