A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Integrando contenido audiovisual

25/36
Recursos

Aportes 58

Preguntas 7

Ordenar por:

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

Para que el Slug funcione, deben modificar la siguiente l铆nea en el archivo web.php

Route::get('/blog/{post:slug}', '[email protected]')->name('post');

Antes era:

Route::get('blog/{post}', '[email protected]')->name('post');

Excelente proyecto, lo segu铆 todo al pie de la letra y logr茅 hacer el blog con Laravel, sin duda aprend铆 cosas nuevas.

Les dejo un enlace a mi repositorio de GitHub el cual contiene el proyecto ya terminado y el reto resuelto en Laravel 8 por si gustan comparar sus c贸digos 馃槃

https://github.com/RetaxMaster/proyecto-blog-laravel-platzi

Les comparto el resultado de mi blog. Personalmente me gusta m谩s el tema oscuro. Le a帽ad铆 una secci贸n de comentarios (todav铆a no lo conect茅 ya que tengo que desplegar mi app en un servidor). Planeo seguir y escalar este projecto, me gusta la idea de tener un blog y recibir algunos comentarios.

Una mejor opcion de obtener la URL de la imagen: \Storage::disk(鈥減ublic鈥)->url($this->image);

Hola,
Les quiero compartir mi proyecto.

La secci贸n administrativa de los articulos.

La vista principal de los articulos

Use este codigo en la view 鈥減ost鈥 para la image y el embedded code

<div class="card-body">
                    @if($post->image)
                        <img src="{{ $post->get_image }}" class="card-img-top mb-4">
                    @endif
                    <h5 class="card-title">{{ $post->title }}</h5>
                    <p class="card-text">
                        {{ $post->body }}
                    </p>
                    <p class="text-muted mb-4">
                        <em>
                            &ndash; {{ $post->user->name }}
                        </em>
                        {{ $post->created_at->format('d M Y') }}
                    </p>
                    @if($post->iframe)
                        <div class="embed-responsive embed-responsive-16by9">
                            {!! $post->iframe !!}
                        </div>
                    @endif
                </div>

驴C贸mo hago para que en la url en ves de pasar el id, pueda usar el slug del post?

Apliqu茅 lo que aprend铆 en esta clase en la vista de editar porque me pareci贸 bien mostrarle al usuario todos los elementos que existen y puede modificar de la publicaci贸n鈥 驴Qu茅 opinan?

Reto cumplido!

@if ($post->image && $post->iframe )
                        <img src=" {{ $post->get_image }} " class="card-img-top" alt="imagenes">
                        <div class="embed-responsive embed-responsive-16by9">
                            {!! $post->iframe !!}
                        </div>
                    @elseif ($post->image)
                        <img src=" {{ $post->get_image }} " class="card-img-top" alt="imagenes">
                    @elseif ($post->image)
                        <div class="embed-responsive embed-responsive-16by9">
                            {!! $post->iframe !!}
                        </div>
                    @endif

Les dejo mi repo con el blog completado usando Laravel 9, Bootstrap 5 y SQLite. Espero les sirva de ayuda.

https://github.com/lecano/basic-crud-blog-example.git

El reto, el posts.blade lo deje tal cual, ya que me mostrara primero la imagen si es que tiene y sino me muestra el iframe.
En el post.blade separe los @if para validar uno por uno y asi muestra ambos si existen.

 @if ($post->image)
                        <img src="{{ $post->get_image }}" alt="" class="card-img-top">
                    @endif
                    @if ($post->iframe)
                        <div class="embed-responsive embed-responsive-16by9">
                            {!! $post->iframe !!}
                        </div>
                    @endif

Listo image e iframe

Aqui el reto:

@if($post->image && $post->iframe)
	<img src="{{ $post->get_image }}" alt="" class="card-img-top">
	<div class="ratio ratio-16x9 mt-4">
		{{!! $post->iframe !!}}
	</div>
@elseif($post->image)
	<img src="{{ $post->get_image }}" alt="" class="card-img-top">
@elseif($post->iframe)
	<div class="ratio ratio-16x9">
	{!! $post->iframe !!}
	</div>
@endif
                        	

Hubiese estado bueno que el curso agreguen que cada ususario puedo editar y eliminar sus propios post ya que de esta forma cualquier persona se registra y tiene acceso a todos los post

Me fascino esta secci贸n, muy buena realmente.

#Image e Iframe

#Codigo

Reto cumplido a continuaci贸n dejo el c贸digo =>

<div class="row">
                            @if ($post->image)
                                <div class="col-xs-6 col-md-6">
                                    <img src="{{$post->get_image}}" 
                                        class="card-img-top">
                                </div>   
                            @endif
                            @if($post->iframe)  
                                <div class="col-xs-6 col-md-6 embed-responsive embed-responsive-16by9">
                                    {!! $post->iframe !!}
                                </div>                            
                            @endif
</div>

Im谩gen y contenido embebido:
@if ($post->image)
<img src="{{ $post->get_image }}" class=鈥渃ard-img-top鈥>
@endif
<div><br></div>
@if ($post->iframe)
<div class=鈥渆mbed-responsive embed-responsive-16by9鈥>
{!! $post->iframe !!}
</div>
@endif

Para los que tengan problema con el slug.

1.- En la ruta se debe modificar como en algunos aportes lo hicieron antes, de esta manera

Route::get('/blog/{post:slug}','[email protected]')->name('posts.edit');

No se olviden de poner el edit en el m茅todo except() algo as铆 en

Route::resource('posts', 'Backend\PostController')
    ->middleware('auth')
    ->except('show','edit');

2.- En el controlador de PostController, se deber谩 modificar esta l铆nea, justamente en el m茅todo update

return back()->with('status','Actualizado correctamente');

Deben modificarlo por

return redirect()->route('posts.edit',$post)->with('status','Actualizado correctamente');

Excelente proyecto =) de los mejores cursos de platzi, gracias profe Italo =)


@if($post->image && $post->iframe)
<img src="{{ $post->get_image }}" class=鈥渃ard-img-top鈥>
<div class=鈥渆mbed-responsive embed-responsive-16by9鈥>
{!! $post->iframe !!}
</div>
@elseif($post->iframe)
<div class=鈥渆mbed-responsive embed-responsive-16by9鈥>
{!! $post->iframe !!}
</div>
@elseif($post->image)
<img src="{{ $post->get_image }}" class=鈥渃ard-img-top鈥>
@endif

comando para declarar la carpeta storage/posts/ como publica, (para el acceso a las im谩genes)

Reto completado: pueden revisarlo en mi repositorio 馃槃

Excelente proyecto muy genial

Me encanto el proyecto, aprend铆 mucho, aqu铆 el reto cumplido c:

Gracias c:

Listo el reto

Reto cumplido!

		@if ($post->iframe)
                        <div class="embed-responsive embed-responsive-16by9">
                        {!! $post->iframe !!}
                        </div>                        
                    @endif
                    @if ($post->image) 
                        <img src="{{ $post->get_image }}" class="card-img-top">
                    @endif

Desafio

![](

Bastante util, muchas gracias!

el tema de los Storage siempre fue un dolor de cabeza para mi, pero ahora lo tengo mucho mas claro su funcionamiento, buen curso.

Alguien me indique cual sera mi inconveniente que el podcast apenas uso la calse de bootstrap ubica bien el video pero me desplaza mucho el pod

Listo el desaf铆o, solo separando el if鈥 y funcionando el slug gracias a @Mateo Gonzales Navarrete.

<div class="col-md-8">
            <div class="card mb-4"> 
            <h5 class='card-title'>{{ $post->title }}</h5>
                <div class="card-body">
                   @if($post->image)
                        <img src="{{ $post->get_image }}" alt="" class="card-img-top">
                    @endif
                    @if($post->iframe)
                        <div class="embed-responsive embed-responsive-16by9">
                        {!! $post->iframe !!}
                        </div>
                        
                    @endif
                   <p class="card-text">
                    {{ $post->body }}
                   </p>
                   <p class='text-muted mb-0'>
                    <em>
                        &ndash; {{ $post->user->name }}
                    </em>
                    {{ $post->created_at->format('d M Y')}}
                   </p>
                </div>
            </div>
        </div>

Excelente!

Perd贸n, pero no hay algo mal en este proyecto? si entro con la cuenta de otro usuario, veo los post de todos los usuarios, puedo eliminarlos y editarlos. Esto es asi? o hice algo mal yo?
Gracias!

  @if($post->image)
                                <img src="{{$post->get_image}}" class="card-img-top">
                                @endif

                            @if($post->iframe)
                                    <div class="embed-responsive embed-responsive-16by9">
                                        {!! $post->iframe !!}
                                    </div>
                                @endif

Reto:

@if ($post->image)
	<img src="{{ $post->get_image }}" class="card-img-top">
@endif 
@if ($post->iframe)
	<div class="embed-responsive embed-responsive-16by9">
		{!! $post->iframe !!}
	</div>
@endif 
<div class="card-body">
                    @if($post->imagen)
                        <img src="{{ $post->get_imagen }}" class="card-img-top">
                    @endif
                    @if($post->iframe)
                        <div class="embed-responsive embed-responsive-16by9">
                            {!!$post->iframe!!}
                        </div>
                    @endif

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

RETO REALIZADO !

@if ($post->image && $post->iframe)
                    <img src="{{ $post->get_image }}" class="card-img-top">
                    <div class="embed-responsive embed-responsive-16by9">
                        <!-- SE COLOCA !! !! PORQUEE USAMOS UN BLADE Y SE USARA HTML -->
                        {!! $post->iframe !!}
                    </div>
                    @elseif ($post->image)
                    <img src="{{ $post->get_image }}" class="card-img-top">
                    @elseif($post->iframe)
                    <div class="embed-responsive embed-responsive-16by9">
                        <!-- SE COLOCA !! !! PORQUEE USAMOS UN BLADE Y SE USARA HTML -->
                        {!! $post->iframe !!}
                    </div>
                    @endif

Un cambio interesante al codigo es en lugar de tener:

    public function index()
    {
        $posts = Post::latest()->get();

        return view('posts.index', compact('posts'));
    }

Se puede manejar

    public function index()
    {
        $posts = Post::latest()->paginate(5);

        return view('posts.index', compact('posts'));
    }

Notese que el 5 representa la cantidad de articulos a mostrar a la vez, con esto y agregando la siguiente linea abajo del @endforeach de la pagina de articulos

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

Podemos tambien paginar la pagina de articulos

Mi soluci贸n al reto:

Modifiqu茅 un poco la parte de los if

@if ($post->image && $post->iframe)
    <img src="{{ $post->get_image }}" class="card-img-top">
    <div class="embed-responsive embed-responsive-16by9">
        {!! $post->iframe !!}
    </div>
@elseif ($post->image)
    <img src="{{ $post->get_image }}" class="card-img-top">
@elseif ($post->iframe)
    <div class="embed-responsive embed-responsive-16by9">
        {!! $post->iframe !!}
    </div>
@endif

Hola, si requiero que el storage no que quede en la app, para poder subirla a heroku, como hago para que esto me quede alojado en otra parte? gracias

Para los que no les guardaba el iframe, agreguen el campo en el associative array de la funci贸n rules en el archivo PostRequest.php
masomenos ser铆a algo asi:

class PostRequest extends FormRequest
{
	//.. tu c贸digo
    public function rules()
    {
        return [
            'title'=>'required',
            'body'=>'required',
            'iframe' => 'nullable'
        ];
    }
    //.. tu c贸digo
}

Alternativa para url(鈥渟torage/$this->image鈥)

Storage::url($this->image);

yo lo solucione de esta manera:

	@if ($post->image)
                        <img src="{{ $post->get_image }}" class="card-img-top">
        @endif
         @if ($post->iframe)
                        <div class="embed-responsive embed-responsive-16by9">
                            {!! $post->iframe !!}
                        </div>
        @endif

Me gusto mucho el proyecto que se desarrollo fue muy pr谩ctico, y el instructor se dio a entender en la forma de explicar cada parte del proyecto.
Comparto el repositorio del proyecto en la versi贸n de Laravel 8.
https://github.com/jhonfa94/introduccion-laravel-platzi

Ha cumplido con todas mis expectativas el curso.

Aprendi mucho con este proyecto! felicito al profesor, muy acertado el proyecto para aprender.