Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Proyecto Blog: presentación y configuración inicial

16/36
Recursos

Aportes 37

Preguntas 10

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Explicación del slug por la misma página del paquete

¿Qué es un slug?

Un slug es una versión simplificada de una cadena, típicamente compatible con URL. El acto de “slugging” de una cadena suele consistir en convertirla en un caso y eliminar los caracteres no compatibles con la URL (espacios, letras acentuadas, amperios, etc.). La cadena resultante puede utilizarse entonces como identificador de un recurso determinado.

Por ejemplo, si tienes un blog con entradas, podrías referirte a cada entrada mediante el ID:

http://example.com/post/1
http://example.com/post/2

… pero eso no es particularmente amigable (especialmente para el SEO). Probablemente preferirías usar el título del post en la URL, pero eso se convierte en un problema si tu post se titula “Mi cena con André y François”, porque esto también es bastante feo:

http://example.com/post/My+Dinner+With+André+%26+François

La solución es crear un slug para el título y usarla en su lugar. Tal vez quieras usar el método incorporado de Laravel, Str::slug(), para convertir ese título en algo más amigable:

http://example.com/post/my-dinner-with-andre-francois

Una URL así hará a los usuarios más felices (es legible, más fácil de escribir, etc.).

Para más información, puede que quieras leer esta descripción en Wikipedia.

Los slug también tienden a ser únicos. Así que si escribes otra entrada con el mismo título, deberías distinguir entre ellas de alguna manera, típicamente con un contador incremental añadido al final del slug:

http://example.com/post/my-dinner-with-andre-francois
http://example.com/post/my-dinner-with-andre-francois-1
http://example.com/post/my-dinner-with-andre-francois-2

Esto mantiene los URLs únicos.

El paquete Eloquent-Sluggable para Laravel tiene como objetivo manejar todo esto por ti automáticamente, con una configuración mínima.

Crear PlatziPress

# Proyecto Blog: presentación y configuración inicial

    > composer create-project --prefer-dist laravel/laravel blog "6.*" (Version LTS)
    > composer require laravel/ui "^1.0" --dev
    > php artisan ui --auth (Arreglar las dependencias de Js y Css en el site de bootstrap)
    > php artisan make:model Post -mfc (Migracion, Factory y Controlador)
    > composer require laravel/ui "^1.0" --dev (componente ui para auth en Laravel)
    > composer require cviebrock/eloquent-sluggable "6.*" (slug version 6 para la version LTS de Laravel actual 2020)
        > https://github.com/cviebrock/eloquent-sluggable (github con instrucciones de uso)

Para los que no tengan instalado laravel de manera global. Usando composer, estos son los comandos que deben poner.

$ composer create-project --prefer-dist laravel/laravel blog
$ cd blog/
$ composer require laravel/ui --dev
$ php artisan ui bootstrap --auth
$ sudo apt-get install npm
$ npm install && npm run dev
$ php artisan make:model Post -mfc
$ composer require cviebrock/eloquent-sluggable

el comando make model desde la version 5.5 incluye el flag “-a” con lo cual antes nos incluía la creación de la migración y el controller ademas del modelo, PERO desde la version 6.15.x se incluye tambien la creación automatica del factory por tanto ahora si bien es totalmente valido usar el flag -mfc tambien puedes usar -a con ello el comando quedaria asi:

php artisan make model Post -a 

Igualmente ambas son validas solo lo agregue porque puede ser mas comodo

para los q estan con laravel 6, instalen el paquete de la siguiente manera:
composer require cviebrock/eloquent-sluggable 6.0.4

para las personas que tengan problemas con la function sluggable() tiene que ponerlo de esta forma para que se lo reconozca

/**
     * Return the sluggable configuration array for this model.
     *
     * @return array
     */
    public function sluggable(): array
    {
        return [
            'slug' => [
                'source' => 'title',
                'onUpdate'=>true
            ]
        ];
    }
<code>

Nota:
Una buena pagina para buscar paquetes de Laravel, como https://packagist.org, pero con paquetes de laravel es https://packalyst.com
Saludos!

Para hoy 13/03/2021 para iniciar el proyecto hice lo siguiente:

1. laravel new {nombre-aplicacion}

2. cd {nombre-aplicacion}

3. composer require laravel/ui --dev

4. php artisan make:model Post -mfc

5. php artisan ui bootstrap --auth

6. npm install && npm run dev

7. composer require cviebrock/eloquent-sluggable
CREACION DE PLATZIPRESS
1 configuracion inicial

-sudo composer create-project --prefer-dist laravel/laravel blog


-composer require laravel/ui --dev


- sudo php artisan ui bootstrap --auth


-sudo npm install


-sudo npm run dev


-sudo php artisan make:model Post -mfc
 //creamos la migracion la factory y el controller


-geteloquent.com||browse packages|| eloquent-slug


-sudo composer require cviebrock/eloquent-sluggable
//slug es la version simplificada de un string para mejor seo ej:
convertir esto 
http://example.com/post/My+Dinner+With+Andr%C3%A9+%26+Fran%C3%A7ois
en esto
http://example.com/post/my-dinner-with-andre-francois

"Post.php
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Cviebrock\EloquentSluggable\Sluggable;use Cviebrock\EloquentSluggable\Sluggable;

class Post extends Model
{
    use Sluggable;
    /**
    * Return the sluggable configuration array for this model.
    *
    * @return array
    */
    public function sluggable()
    {
        return [
            'slug' => [
                'source' => 'title',
                'onUpdate'=> true 
            ]
        ];
    }
}



2 cuando comenzamos un projecto antes debemos definir que tablas vamos a usar, que dependencias usaremos .

Para los que esten en laravel 8. Para agregar el slug ya no hace faltar ese paquete de composer

tiramos de

composer require laravel/helpers

en el Factory

<?php

namespace Database\Factories;
use Illuminate\Support\Str;
use Illuminate\Database\Eloquent\Factories\Factory;

class PostFactory extends Factory
{
    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        $title = $this->faker->sentence();
        $slug = str_slug($title, '-');



        return [
            'user_id' => 1,
            'title' => $title,
            'body' => $this->faker->text(20),
            'slug' =>$slug
        ];
    }
}

Saludos

Para quienes usan una forma de instalarlo diferente y no les deje hacer “php artisan make:auth” lo que pueden hacer es descargan la siguiente librería:
composer require laravel/ui

y hacen este comando:
php artisan ui vue --auth

Si van a la página a mirar, veran que ya está pero con un estilo feo, para terminar de configurarlo hacemos:
npm install && npm run dev

Y ahora si, estará listo!
PDT: En este caso es cómo si fueramos a usar vue de framework en el frontend, también podemos usar otros comandos para React y Angular por ejemplo.

Laravel 7.* =>
composer require cviebrock/eloquent-sluggable="^7.0"

Recomiendo tener actualizado el PHP. Para el comando laravel new … es necesario tener PHP 7.3 o superior.

composer global require laravel/installer //Instalador de laravel usando composer
composer require laravel/ui //Instalar paquete de laravel ui para hacer auth
php artisan ui bootstrap –auth //Generando auth scaffolding
npm install //para instalar todas las dependencias NPM
npm run dev //para compilar

Antes se buscaba el paquete necesario en google y se instalaba.Ahora se centraliza todo mediante el manejador de paquetes composer.

Se recomienda buscar el paquete con mayor popularidad y ver si tiene documentacion o instrucciones en algun repositorio preferiblemente git

Los slugs nos sirven para hacer URL’s amigables y ciertamente no ayudan a posicionar nuestras página en Google, es parte del tema de SEO, este concepto se ve sobre todo en WordPress, simplemente es transformar las un título a una URL legible tanto par el usuario como par el navegador

En Laravel 9 viene incluido ya un método para trabajar el slug, les comparto la info:

The Str::slug method generates a URL friendly “slug” from the given string:

use Illuminate\Support\Str;
 
$slug = Str::slug('Laravel 9 Framework', '-');

Link a la documentación: https://laravel.com/docs/9.x/helpers#method-str-slug

Usando Laragon luego de crear el proyecto, tocan los siguientes comandos:

$ composer require laravel/ui --dev
$ php artisan ui bootstrap --auth
$ install npm
$ npm run dev
$ php artisan make:model Post -mfc
$ composer require cviebrock/eloquent-sluggable

por si algunos les sirve, actualmente esta lartavel 8, pero para los que se adaptaron al curso y usan la version 6 o 7

Si estas usando laravel 8 crea el proyecto y después installa laravel ui, aunque laravel 8 ya ofrece otro scaffolding muy similar, se llama breeze, a diferencia de laravel ui, breeze usa tailwind, no bootstrap.
Dejo los links aqui abajo:
https://github.com/laravel/ui
https://laravel.com/docs/8.x/starter-kits#laravel-breeze
#NeverStopToLearn

Los que tengan problema con la versión del paquete, en la documentación oficial del paquete dice que a partir de Laravel 6 la versión de laravel debe ser la misma del paquete. En este caso de la clase se esta usando laravel 6. Por lo que el comando deberia ser algo así

composer require cviebrock/eloquent-sluggable:6.0.*

Laravel cada vez implementa muchas cosas geniales que nos hacen la vida más fácil

Si están con laravel 7 y al ejecutar “composer require cviebrock/eloquent-sluggable” les da problemas, prueben con el comando “composer require cviebrock/eloquent-sluggable ^7.0”

https://stackoverflow.com/questions/60939175/laraveleloquent-sluggable

Para instalar eloquent-sluggable con una versión específica de laravel, realizamos el siguiente comando:

composer require cviebrock/eloquent-sluggable ^6.0

para cambiar de versión, solo cambias el número final, por ejemplo

^7.0

para la versión 7 de Laravel

Atajo de comando para instalar nuestro model, factory y controller de una sola vez:

php artisan make:model Post -mfc

Indagando en la documentación de Laravel, he encontrado que el Framework mismo, posee helpers para los slugs.

Slug nativo de Laravel

antes se buscaba el paquete necesario en google y se instalaba.Ahora se centraliza todo mediante el manejador de paquetes composer.

Para los que tuvieron problemas a la hora hacer el install de eloquent-sluggable
Deben usar este comando

      composer require cviebrock/eloquent-sluggable 7.00 

Si estan usando Laravel 7 deberian instalar de esta forma el paquete:
composer require cviebrock/eloquent-sluggable="^7.0"
Referencia: Paquete cviebrock/eloquent-sluggable

Interesante vamos aplicar 😃

Excelente por el paquete de Slug para los POST, muy buen SEO

Slug es convertir una cadena de texto en una URL amigable.

Wow! Yo ya venia sabiendo laravel, pero este paquete para manejar los slugs no lo sabía…!

“en el pasado nosotros íbamos a Google y buscábamos allí los paquetes que íbamos a utilizar … hoy día no!”

Existe un error al instalar cviebrock / eloquent-sluggable en Laravel 6

Se debe ejecutar el siguiente comando para arreglarlo

composer require cviebrock/eloquent-sluggable:^6.0.1

en mi caso composer dio error al instalar el paquete eso quiere decir que tenia una versión antigua en mi paquete laragon, para reparar esto, ubicarnos en la ruta:

C:\laragon\bin\composer

y ejecutar:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

y con esto se actualizo el composer

Instalar laravel con composer:
composer global require laravel/installer // Instala Laravel

composer require laravel/ui // Instala paquete para hacer uso de --auth

php artisan ui bootstrap --auth // Generando auth

npm install // Instalamos dependencias

npm run dev // Ejecutamos servidor

Comando:
laravel new NombreProyecto --auth