app/Http/Controllers/Admin/PostController.php
/**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
Store a newly created resource in storage.
Store a newly created resource in storage .
public function store(Request $request)
    {   
        $validateData = $request->validate([
            'title' => 'required',
            'content' => 'required',
            'category_id' => 'required|exists:App\Model\Category,id',
            'tags.*' => 'nullable|exists:App\Model\Tag,id',
            'image' => 'nullable|image',
        ]);
        $data = $request->all();
        $slug = Str::slug($data['title'], '-');
        $postSlugControl = Post::where('slug', $slug)->first();
        $counter = 0;
        while ($postSlugControl) {
            $newSlug = $slug . '-' . $counter;
            $postSlugControl = Post::where('slug', $newSlug)->first();
            $counter++;
        }
        if (!empty($data["image"])) {
            $img_path = Storage::put("uploads", $data["image"]);
            $data["image"] = $img_path;
        }
        $post = new Post();
        $post->title = $data['title'];
        $post->content = $data['content'];
        $post->image = $data['image'];
        $post->category_id = $data['category_id'];
        $post->user_id = Auth::user()->id;
        if ($postSlugControl) {
            $post->slug = $newSlug;
        } else {
            $post->slug = $slug;
        }
        $save = $post->save();
        if (!$save) {
            dd('Save failed...');
        }
        if (!empty($data['tags'])) {
            $post->tags()->attach($data['tags']);
        }
        return redirect()->route('admin.posts.show', $post->id);
    }
public function store ( Request $ request ) { $ validateData = $ request -> validate ( [ 'title' => 'required' , 'content' => 'required' , 'category_id' => 'required|exists:App\Model\Category,id' , 'tags.*' => 'nullable|exists:App\Model\Tag,id' , 'image' => 'nullable|image' , ] ) ; $ data = $ request -> all ( ) ; $ slug = Str :: slug ( $ data [ 'title' ] , '-' ) ; $ postSlugControl = Post :: where ( 'slug' , $ slug ) -> first ( ) ; $ counter = 0 ; while ( $ postSlugControl ) { $ newSlug = $ slug . '-' . $ counter ; $ postSlugControl = Post :: where ( 'slug' , $ newSlug ) -> first ( ) ; $ counter ++ ; } if ( ! empty ( $ data [ " image " ] ) ) { $ img_path = Storage :: put ( " uploads " , $ data [ " image " ] ) ; $ data [ " image " ] = $ img_path ; } $ post = new Post ( ) ; $ post -> title = $ data [ 'title' ] ; $ post -> content = $ data [ 'content' ] ; $ post -> image = $ data [ 'image' ] ; $ post -> category_id = $ data [ 'category_id' ] ; $ post -> user_id = Auth :: user ( ) -> id ; if ( $ postSlugControl ) { $ post -> slug = $ newSlug ; } else { $ post -> slug = $ slug ; } $ save = $ post -> save ( ) ; if ( ! $ save ) { dd ( 'Save failed...' ) ; } if ( ! empty ( $ data [ 'tags' ] ) ) { $ post -> tags ( ) -> attach ( $ data [ 'tags' ] ) ; } return redirect ( ) -> route ( 'admin.posts.show' , $ post -> id ) ; }
Store a newly created resource in storage.
Store a newly created resource in storage .
//Questo controllo serve a fare in modo che non esistano "slug" identici tra loro. //Nel caso in cui $postSlugControl non sia null (la ricerca qua sotto cerca il primo risultato con quello "slug"), si entra nel While. //Partendo da zero, se trova un altro "slug" identico a quello che sta creando, aggiungerà un numero in base al counter. //Quindi, nel caso ne avessimo due uguali, lo "slug" dell'elemento che stiamo creando sarà qualcosa del tipo "slugesempio-1", se ne avessimo 50 uguali sarà "slugesempio-50"(quelli prima partiranno da slugesempio fino a slugesempio49).