58. Crear nuevo Post


6 comentarios

Inicia sesión para comentar

Comentarios:

  • Mis Soporte

    Mis Soporte hace 1 año

    Que paso con la tabla taggables del video mucho a muchos polimorfica?

  • Walter

    Walter hace 1 año

    ? 5° Configuración del método store del controlador PostController

    public function store(StorePostRequest $request) 
    {
    	$post = Post::create($request->all());
    	
    	if($request->tags){
    		$post->tags()->attach($request->tags);
    	}
    	
    	return redirect()->route('admin.posts.edit', $post);
    }

     

  • Walter

    Walter hace 1 año

    ? 4° Habilitación de la asignación masiva en el modelo Post

    <?php
    namespace App\Models;
    
    use Illuminate\Database\Eloquent\Factories\HasFactory;
    use Illuminate\Database\Eloquent\Model;
    
    class Post extends Model
    {
    	use HasFactory;
    	
    	protected $guarded = ['id', 'created_at', 'updated_at'];
    	
    	public function user() 
    	{
    		return $this->belongsTo(User::class);
    	}
    	
    	public function category() 
    	{
    		return $this->belongsTo(Category::class);
    	}
    	
    	public function tags() 
    	{
    		return $this->belongsToMany(Tag::class);
    	}
    	
    	public function image() 
    	{
    		return $this->morphOne(Image::class, 'imageable');
    	}
    	
    }

     

  • Walter

    Walter hace 1 año

    ? 3° Configuración del controlador PostController

    <?php 
    namespace App\Http\Controllers\Admin;
     
    use App\Http\Controllers\Controller; 
    use Illuminate\Http\Request; 
    use App\Models\Post; 
    use App\Models\Category;
    use App\Models\Tag;
    
    use App\Http\Requests\StorePostRequest;
    
    class PostController extends Controller 
    { 
    	public function index() 
    	{
    		return view('admin.posts.index');
    	} 
    	
    	public function create() 
    	{
    		$categories = Category::pluck('name', 'id');
    		$tags = Tag::all();
    	
    		return view('admin.posts.create', compact('categories', 'tags'));
    	} 
    	
    	public function store(StorePostRequest $request) 
    	{
    		return "Las validaciones pasaron con éxito!";
    	}
    	 
    	public function show(Post $post) 
    	{
    		return view('admin.posts.show', compact('post'));
    	} 
    	
    	public function edit(Post $post) {} 
    	public function update(Request $request, Post $post) {} 
    	public function destroy(Post $post) {} 
    }

     

  • Walter

    Walter hace 1 año

    ? 2° Reglas de validación con Form Request

    php artisan make:request StorePostRequest

    Esta ejecución crea la carpeta Request en app/Http/ y dentro el archivo StorePostRequest.php:

    <?php
    namespace App\Http\Requests;
    
    use Illuminate\Foundation\Http\FormRequest;
    
    class StorePostRequest extends FormRequest
    {
    	public function authorize()
    	{
    		if($this->user_id == auth()->user()->id)
    		{
    			return true;
    		}
    		return false;
    	}
    	
    	public function rules()
    	{
    		$rules = [
    			'name' => 'required',
    			'slug' => 'required|unique:posts',
    			'status' => 'required|in:1,2'
    		];
    		
    		if($this->status == 2) {
    			$rules = array_merge($rules, [
    				'category_id' => 'required',
    				'tags' => 'required',
    				'extract' => 'required',
    				'body' => 'required'
    			]);
    		}
    		
    		return $rules;
    	}
    }

     

     

  • Walter

    Walter hace 1 año

    ? 1° Actualizamos la migración de posts

    $table->text('extract')->nullable();
    $table->longText('body')->nullable();

    Luego volvemos a ejecutar:

    php artisan migrate:fresh --seed