A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Dise帽o visual con Bootstrap

19/36
Recursos

Aportes 23

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Me encanta que Laravel est谩 tan preparado que ya incluye sus propios m茅todos par paginaci贸n!

Si a ustedes no se les muestra bien la paginaci贸n (Los estilos se rompen) les comparto esta soluc贸n, solo deben escribir lo siguiente en donde va links:

{{ $posts->links("pagination::bootstrap-4") }}

Encontre la documentaci贸n de laravel en la secci贸n de Helpers que podemos utilizar esto:

use Illuminate\Support\Str;

$truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20);

// The quick brown fox...

En este caso ser铆a:

public function getGetExcerptAttribute(){
        return Str::limit($this->body,140);
    }

Para poder retornar menos de 10 post por paginacion hay que editar el m茅todo, en este caso lo deje en 5

    public function posts(){
        return view('posts', [
          'posts' => Post::with('user')->latest()->paginate(5)
        ]);
    }

Ac谩 dejo lo siguiente https://laravel.com/docs/8.x/pagination#using-bootstrap en dado caso los elementos de la paginaci贸n a nivel de dise帽o no se les muestre bien sobre todo en Laravel 8, ya que por defecto, la paginaci贸n trabaja con Tailwind CSS framework

Para los que tienen problemas de css a la hora de llamar $posts->links() se puede usar:

Paginator::useBootstrap()

dentro de la funcion posts del archivo PageController se soluciona el problema
Basicamente quedar铆a asi:

PageController.php

class PageController extends Controller
{

    public function posts()
    {
        Paginator::useBootstrap();
        return view("posts",[
            "posts"=>Post::with("user")->latest()->paginate(),
        ]);
    }
	//... todo el resto de la clase PageController
}

Y asi la linea de links en la vista:
posts.blade.php

{{$posts->links()}}

Aqui se puede encontrar mas informaci贸n acerca de Paginators

Un tema que queda ac谩 entre lineas es que para que funcionen los comandos que competen a npm se debe tener instalado Node.js
.
Una soluci贸n practica que encontr茅 es entrar en el layout y sustituir las lineas:

<script src="{{ asset('js/app.js') }}" defer></script>
<link href="{{ asset('css/app.css') }}" rel="stylesheet">

Por las URLs directas de bootstrap que pueden ser encontradas en la documentaci贸n de su site.

En laravel 8, te coloca ademas unos botones con iconos ( < > ) de siguiente y anterior en la paginaci贸n, si solo quieres dejar los botones sencillos usamos el siguiente metodo.

  'subtipos' => Subtipo::with('estrategia')->latest()->simplePaginate(3)

en vez de

            //'subtipos' => Subtipo::with('estrategia')->latest()->Paginate(3)

Presento el siguiente error al ejecutar el comando npm run dev

ERROR Failed to compile with 2 errors 16:57:36

error in ./resources/sass/app.scss

Module build failed (from ./node_modules/css-loader/index.js):
ModuleBuildError: Module build failed (from ./node_modules/sass-loader/dist/cjs.js):
ValidationError: Invalid options object. Sass Loader has been initialized using an options object that does not match the API schema.

alguien me puede ayudar?

RESUMEN

Dise帽o de enlace de paginacion y extracto de post
1
Empezemos con el extracto del post
ATRIBUTOS

COMO VIMOS EN posts.blade.php para el estracto utilizamos 
 {{$post->get_excerpt}} //get_excerpt luego lo utilizaremos en Post.php...

//para obtener atributo usuario->get_titulo 
//en Usuario.php hariamos   public function getGetTituloAttribute(){...}

-"Post.php" 
queremos substraer las primeras 140 palaabras 

    public function getGetExcerptAttribute(){
        return substr($this->body,0,140);

    }

"listo el post ya tiene su extracto de 140 palabras"


2
Paginacion

posts.blade.php
	Debajo del foreach
//links es un method interno de laravel por haber usado  paginator en PageController

       {{ $posts->links() }}

ya tenemos botones de paginacion
            

Es que Laravel es beautiful

Para quienes tienen problema con bootstrap les recomiendo ver esta pag https://www.neoguias.com/instalar-bootstrap-laravel/

En el controlador podemos ingresar un par谩metro en el m茅todo 鈥減aginate鈥, para mostrar una cantidad de elementos en la vista.

Ejemplo del controlador del blog:

return view('posts', [
            'posts' => Post::with('user')->latest()->paginate(5)
        ]);

En la vista solo mostrar谩 5 posts y m谩s links de paginaci贸n.

Aplicar los enlaces de paginaci贸n

  1. Para poder hacer esto primero hay que configurar que la data que queramos mostrar utilice el m茅todo paginate() como en este ejemplo de listado de post.
 return view('posts',[
            'posts' => Post::with('user')->latest()->paginate()
        ]);

  1. Despu茅s nos dirigimos a la vista e imprimimos las etiquetas de navegaci贸n que ya nos configura Laravel
 {{ $posts->links() }}

  1. Con esto podremos visualizar el siguiente resultado funcionando

Si se est谩 usando laravel 8x e instalas jetstream. 驴Hay alguna manera de usar bootstrap, o se est谩 obligada a usar TailwindCSS?

Bootstrap le proporciona un dise帽o fant谩stico a nuestros sitios web.

En laravel 9 no olviden copiar esta linea en app.blade.php
<link href=鈥https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css鈥 rel=鈥渟tylesheet鈥 integrity=鈥渟ha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3鈥 crossorigin=鈥渁nonymous鈥>

avances del blog
#Posts

#Post

Excelente explicacion

Recordando esos metodos hermosos de PHP
SUBSTR
DATE FORMAT

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            @foreach($posts as $post)
            <div class="card mb-4">


                <div class="card-body">
                    <h5 class="card-title">{{ $post->title }}</h5>
                    <p class="card-text">
                        {{ $post->get_excerpt }}
                        <a href="{{ route('post',$post) }}">Leer m谩s</a>

                    </p>
                    <p class="text-muted mb-0">
                        <em>
                            &ndash; {{ $post->user->name }}
                        </em>
                        {{ $post->created_at->format('d M Y')}}
                    </p>

                </div>
            </div>
            
            @endforeach

            {{ $posts->links() }}

        </div>
    </div>
</div>
@endsection

馃毃Si tienes problemas con la paginaci贸n馃毃

Est贸 es porque se requiere tailwind, dentro de " resources/views/layouts/app.blade.php" debes incluir esto:

<link href="https://unpkg.com/[email protected]^2/dist/tailwind.min.css" rel="stylesheet">

Recuerda que esto debe ir en el head, un saludo 鉂わ笍.

Excelente clase, genial por el uso de eloquent y sacarle su m谩ximo provecho

en la paginaci贸n me sal铆a al final los botonoes > y < enormes y pues se da帽aba el dise帽o, esto soluciona mediente el uso de:
{{ $posts->links()}} cambiar por
{{ $posts->links(鈥減agination::bootstrap-4鈥) }}
en el earchivo de posts.blade.php