Size: a a a

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

2020 October 28

MP

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

DM

Dr Moluskin in Laravel для начинающих
Всем доброго времени суток! Такой вопрос. Поставил пакет LaravelRoles. Включил GUI, но он доступен из корневого сайта. Как мне добавить к routes пакета префикс необходимый мне?
источник

SS

Serg Serdyuk in Laravel для начинающих
Ох уж эти пакеты пермишенов🌚
источник

S

Shotty in Laravel для начинающих
Привет. Кто настраивал сервер для лары на digitalocean?

Тут нужно настроить Build Command и Run Command
источник

MP

Maksim (Ellrion) Pla... 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'));
   }
}

пыздец да?
Эм а нафига там с пагинатором ручная работа?
источник

С

Санжар 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'));
   }
}

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

П

Просто Дэнчик... in Laravel для начинающих
мне надо если к примеру 7 страница, а постов всего на 5, чтоб отображало 5ю...

т.е if page>lastpage   page=lastpage  по-хорошему бы реализацию paginate переопределить
источник

С

Санжар in Laravel для начинающих
немного не понял а что там с регуляркой?
источник

MP

Maksim (Ellrion) Pla... in Laravel для начинающих
Просто Дэнчик
мне надо если к примеру 7 страница, а постов всего на 5, чтоб отображало 5ю...

т.е if page>lastpage   page=lastpage  по-хорошему бы реализацию paginate переопределить
Там надо было просто карент пэйдж резолвер задать пагинатору тогда уж и всё
источник

П

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

MP

Maksim (Ellrion) Pla... in Laravel для начинающих
Эм какой?
источник

П

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

П

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

MP

Maksim (Ellrion) Pla... in Laravel для начинающих
Ладно я с телефона и без кода тяжело
источник

MP

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

П

Просто Дэнчик... in Laravel для начинающих
и лишних 5запросов считай
источник

П

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

MP

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

MP

Maksim (Ellrion) Pla... in Laravel для начинающих
Или хелпер методе контроллера. Что полотно то такое
источник

MP

Maksim (Ellrion) Pla... in Laravel для начинающих
Методы должны быть локоничными
источник