I personally use cviebrock sluggable for creating slug at easy way
You should try it
Can't make page url {slug}! When I type a page, all pages appear at once, and so on with any url.
It should be like this domain.com/page-title (url).
Here is the controller.
<?php
namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Intervention\Image\Facades\Image;
class PostController extends Controller
{
public function PostPage() {
$postpage = Post::latest()->get();
return view('admin.post.post_all', compact('postpage'));
}
public function AddPost() {
return view('admin.post.post_add');
}
public function StorePost(Request $request) {
$image_post = $request->file('image_post');
$name_gen = hexdec(uniqid()).'.'.$image_post->getClientOriginalExtension();
Image::make($image_post)->save('upload/image_post/'.$name_gen);
$save_url = 'upload/image_post/'.$name_gen;
Post::insert([
'title_name_post' => $request->title_name_post,
'slug' => $request->slug,
//$post->slug = Str::slug($data['slug']);
'description_post' => $request->description_post,
'image_post' => $save_url,
'meta_title_post' => $request->meta_title_post,
'meta_description_post' => $request->meta_description_post,
'meta_keyword_post' => $request->meta_keyword_post,
]);
$notification = array(
'message' => 'Post Inserted Successfully',
'alert-type' => 'success'
);
return redirect()->route('post.page')->with($notification);
}
public function EditPost($id) {
$post = Post::findOrFail($id);
return view('admin.post.post_edit', compact('post'));
}
public function UpdatePost(Request $request) {
$post_id = $request->id;
if ($request->file('image_post')) {
$image_post = $request->file('image_post');
$name_gen = hexdec(uniqid()).'.'.$image_post->getClientOriginalExtension();
Image::make($image_post)->save('upload/image_post/'.$name_gen);
$save_url = 'upload/image_post/'.$name_gen;
Post::findOrFail($post_id)->update([
'title_name_post' => $request->title_name_post,
'description_post' => $request->description_post,
'image_post' => $save_url,
'meta_title_post' => $request->meta_title_post,
'meta_description_post' => $request->meta_description_post,
'meta_keyword_post' => $request->meta_keyword_post,
]);
$notification = array(
'message' => 'Post Updated with Image Successfully',
'alert-type' => 'success'
);
return redirect()->route('post.page')->with($notification);
} else {
Post::findOrFail($post_id)->update([
'title_name_post' => $request->title_name_post,
'slug' => $request->slug,
'description_post' => $request->description_post,
'meta_title_post' => $request->meta_title_post,
'meta_description_post' => $request->meta_description_post,
'meta_keyword_post' => $request->meta_keyword_post,
]);
$notification = array(
'message' => 'Post Updated without Image Successfully',
'alert-type' => 'success'
);
return redirect()->route('post.page')->with($notification);
}
}
public function DeletePost($id) {
$post = Post::findOrFail($id);
$img = $post->image_post;
unlink($img);
Post::findOrFail($id)->delete();
$notification = array(
'message' => 'Post Deleted Successfully',
'alert-type' => 'success'
);
return redirect()->route('post.page')->with($notification);
}
public function HomePost() {
$postpage = Post::find(1);
return view('frontend.view', compact('postpage'));
}
}
Here is the route.
Route::controller(PostController::class)->group(function () {
Route::get('/post/page', 'PostPage')->name('post.page');
Route::get('/add/post', 'AddPost')->name('add.post');
Route::post('/store/post', 'StorePost')->name('store.post');
Route::get('/edit/post/{id}', 'EditPost')->name('edit.post');
Route::post('/update/post/{id}', 'UpdatePost')->name('update.post');
Route::get('/delete/post/{id}', 'DeletePost')->name('delete.post');
Route::get('/{slug}', 'HomePost')->name('home.post');
});
Here is the page.
@php
$post = App\Models\Post::latest()->get();
@endphp
<section class="white-bg hotel-feature-step service-view">
<div class="container-fluid p-0">
<div class="row no-gutters">
<div class="row">
@foreach($post as $post_item)
<div class="fleet-block-card">
<img src="{{ asset($post_item->image_post) }}" alt="">
<h3>{{ $post_item->description_post }}</h3>
</div>
@endforeach
</div>
</div>
</div>
</section>
Please or to participate in this conversation.