Write controllers that validate input, call models, and return views or JSON responses.
Controllers
php artisan make:controller PostController --resource
namespace AppHttpControllers;
use AppModelsPost;
use IlluminateHttpRequest;
class PostController extends Controller {
public function index() {
$posts = Post::latest()->paginate(10);
return view("posts.index", compact("posts"));
}
public function store(Request $request) {
$data = $request->validate([
"title" => "required|max:255",
"body" => "required",
"slug" => "required|unique:posts",
]);
$post = Post::create($data);
return redirect()->route("posts.show", $post)
->with("success", "Post created!");
}
public function show(Post $post) { // auto route model binding!
return view("posts.show", compact("post"));
}
public function destroy(Post $post) {
$post->delete();
return redirect()->route("posts.index");
}
}