Size: a a a

Laravel для начинающих

2020 October 28

S

Shotty in Laravel для начинающих
Привет. Мб кто-то знает, есть рабочий проект в гитхабе закрытый - создавал его не я, но инвайт в нем есть. Как можно добавить его в списки своих репозиторий?
источник

S

Seroshka in Laravel для начинающих
Подскажите как сделать возможность указовать порядок в таблице, потому что как мне кажется если есть колонка которая зранит порядковый номер записи для отображения, то когда удаляется элемент то нужно сдвинуть порядковые номера остальных, как то трудоемко получается, подскажите как это сделать правельно
источник

MP

Maksim (Ellrion) Pla... in Laravel для начинающих
TheTRY
этож, что получаетеся, в контроллере не должно быть вообще никаких функций кроме имеющих рут?
Ну почему же, приватные методы для декомпозиции экшен метадов имеют право быть
источник

AK

Alex Kovalchuk in Laravel для начинающих
TheTRY
этож, что получаетеся, в контроллере не должно быть вообще никаких функций кроме имеющих рут?
ага, по хорошому забрать бизнес логику с контролеров и он только отображает даные и передает входящие данные
источник

T

TheTRY in Laravel для начинающих
Понял, что нельзя, теперь буду вкуривать почему ( Я люблю так делать...
источник

MP

Maksim (Ellrion) Pla... in Laravel для начинающих
TheTRY
Понял, что нельзя, теперь буду вкуривать почему ( Я люблю так делать...
Ты уверен что понял о чём изначально речь?
Ты любишь вызывать методы одного контроллера в другом?
источник

T

TheTRY in Laravel для начинающих
Maksim (Ellrion) Platonov
Ты уверен что понял о чём изначально речь?
Ты любишь вызывать методы одного контроллера в другом?
Да, люблю )
источник

MP

Maksim (Ellrion) Pla... in Laravel для начинающих
Я даже кейсов придумать особенно не могу что бы такое захотелось хХ
источник

MP

Maksim (Ellrion) Pla... in Laravel для начинающих
Боюсь представить что у тебя там за код
источник

T

TheTRY in Laravel для начинающих
Maksim (Ellrion) Platonov
Боюсь представить что у тебя там за код
Допустим, у меня есть контроллер с задачей вызываемый по руту, и есть джоб этой задачи вызываемый раз в сутки. Вот в джобе просто вызывается функция контроллера.
источник

Н

Николай in Laravel для начинающих
кстати, а если мы в сервисе возвращаем объект класса, то как построить логику, что можно вызвать какой-то конкретный класс, передав в app() интерфейс, если обработчиков 10, например?
источник

MP

Maksim (Ellrion) Pla... in Laravel для начинающих
TheTRY
Допустим, у меня есть контроллер с задачей вызываемый по руту, и есть джоб этой задачи вызываемый раз в сутки. Вот в джобе просто вызывается функция контроллера.
Ну и как бы через жопу. Вместо того что бы логику инкапсулироть в консольной команде и в контроллере как раз ее и вызывать как стандартно
источник

T

TheTRY in Laravel для начинающих
Maksim (Ellrion) Platonov
Ну и как бы через жопу. Вместо того что бы логику инкапсулироть в консольной команде и в контроллере как раз ее и вызывать как стандартно
я согласен, что через жопу, но я не видел в этом особой проблемы до этого момента)
источник

SS

Serg Serdyuk in Laravel для начинающих
Maksim (Ellrion) Platonov
Ну и как бы через жопу. Вместо того что бы логику инкапсулироть в консольной команде и в контроллере как раз ее и вызывать как стандартно
Можно еще в сервис вынести, и его дергать и в контроллере и в команде при необходимости
источник

T

TheTRY in Laravel для начинающих
Serg Serdyuk
Можно еще в сервис вынести, и его дергать и в контроллере и в команде при необходимости
видимо это я и сделаю, потому что слишком тупой для других вариантов)
источник

П

Просто Дэнчик... in Laravel для начинающих
я вот не представляю как это выносить и делать нормально, один хрен пилить сильно не получится
источник

П

Просто Дэнчик... in Laravel для начинающих
Переслано от Просто Дэнчик...
class PostController extends Controller
{
   public function postsList($path=null){
       Breadcrumbs::push('Блог',URL::route('posts.list'));
       $posts = Posts::select('*');
       $letters = Posts::selectRaw('UCASE(SUBSTR(`posts`.`title`,1,1)) as `char`');
       $filters=[];
       View::share('title', 'Блог');
       View::share('subtitle', 'Здесь вы найдете что-нибудь интересное');
       if($path){
           $uri = Str::afterLast($path,'/');
           $cat=Categories::where('uri','=',$uri)->with(['ancestors','descendants','ancestors.ancestors'])->firstOrFail();
           abort_if($cat->getPath()!=$path,404);
           $cat->buildBreadcrumbs();
           $cat_ids = clone $cat->descendants;
           $cat_ids = $cat_ids->push($cat)->pluck('id')->toArray();
           $posts=$posts->whereIn('category_id',$cat_ids);
           $letters = $letters->whereIn('category_id',$cat_ids);
           $filters['path']=$path;
           View::share('title', 'Блог / Категория: '.$cat->name);
           View::share('subtitle', $cat->subtitle);
       }
       
       //Фильтр по букве названия
       if (preg_match('/^[0-9a-zа-я]{1,1}$/iuU', request()->get('char', null))) {
           $filters['char'] = Str::upper(request()->get('char', null));
           $posts->where(DB::raw('UCASE(SUBSTR(`posts`.`title`,1,1))'),'=',$filters['char']);
           $char=Posts::selectRaw('? as `char`',[$filters['char']??'*']);
           $letters=$letters->union($char);
       }

       $page=LengthAwarePaginator::resolveCurrentPage();
       $rpp=20;
       $cnt= clone $posts;
       $cnt=$cnt->count();
       $total=ceil($cnt/$rpp);
       if( $page>$total){
           $page=$total;
       }
       $offset=( $page-1)*$rpp;
       $posts=$posts->with(['user','tags','category','category.ancestors'])->limit($rpp)->offset($offset)->get();
       $posts=new LengthAwarePaginator($posts,$cnt,$rpp, $page,['path'=>url()->current()]);
       $letters= $letters->distinct()->orderBy('char','asc')->get();
       return view('posts.list',compact('posts','letters','filters'));
   }
}

пыздец да?
источник

Gt

Galèriarch the Koban... in Laravel для начинающих
Просто Дэнчик
Переслано от Просто Дэнчик
class PostController extends Controller
{
   public function postsList($path=null){
       Breadcrumbs::push('Блог',URL::route('posts.list'));
       $posts = Posts::select('*');
       $letters = Posts::selectRaw('UCASE(SUBSTR(`posts`.`title`,1,1)) as `char`');
       $filters=[];
       View::share('title', 'Блог');
       View::share('subtitle', 'Здесь вы найдете что-нибудь интересное');
       if($path){
           $uri = Str::afterLast($path,'/');
           $cat=Categories::where('uri','=',$uri)->with(['ancestors','descendants','ancestors.ancestors'])->firstOrFail();
           abort_if($cat->getPath()!=$path,404);
           $cat->buildBreadcrumbs();
           $cat_ids = clone $cat->descendants;
           $cat_ids = $cat_ids->push($cat)->pluck('id')->toArray();
           $posts=$posts->whereIn('category_id',$cat_ids);
           $letters = $letters->whereIn('category_id',$cat_ids);
           $filters['path']=$path;
           View::share('title', 'Блог / Категория: '.$cat->name);
           View::share('subtitle', $cat->subtitle);
       }
       
       //Фильтр по букве названия
       if (preg_match('/^[0-9a-zа-я]{1,1}$/iuU', request()->get('char', null))) {
           $filters['char'] = Str::upper(request()->get('char', null));
           $posts->where(DB::raw('UCASE(SUBSTR(`posts`.`title`,1,1))'),'=',$filters['char']);
           $char=Posts::selectRaw('? as `char`',[$filters['char']??'*']);
           $letters=$letters->union($char);
       }

       $page=LengthAwarePaginator::resolveCurrentPage();
       $rpp=20;
       $cnt= clone $posts;
       $cnt=$cnt->count();
       $total=ceil($cnt/$rpp);
       if( $page>$total){
           $page=$total;
       }
       $offset=( $page-1)*$rpp;
       $posts=$posts->with(['user','tags','category','category.ancestors'])->limit($rpp)->offset($offset)->get();
       $posts=new LengthAwarePaginator($posts,$cnt,$rpp, $page,['path'=>url()->current()]);
       $letters= $letters->distinct()->orderBy('char','asc')->get();
       return view('posts.list',compact('posts','letters','filters'));
   }
}

пыздец да?
источник

T

TheTRY in Laravel для начинающих
Serg Serdyuk
Можно еще в сервис вынести, и его дергать и в контроллере и в команде при необходимости
но это все равно вызовет некое дублирование кода... джобу похрену что там шаблоны вызываются, а тут придется шаблоны вызывать в контроллере, а большую часть кода держать в сервисе....
источник

Н

Николай in Laravel для начинающих
TheTRY
но это все равно вызовет некое дублирование кода... джобу похрену что там шаблоны вызываются, а тут придется шаблоны вызывать в контроллере, а большую часть кода держать в сервисе....
так одна строчка это не дублирование кода. у тебя логика в сервисе, а вызываешь ты в 2 местах
источник