Почему view не видит значения переменной?
Вы пишетеreturn view('admin.posts.createpost')->withPost($category);
что равносильноreturn view('admin.posts.createpost', [
  'post' => $category,
]);
то есть во view переменная $category будет под именем $post
Делайте такreturn view('admin.posts.createpost', [
  'category' => $category,
]);
или такreturn view('admin.posts.createpost', compact('category')]);
или такreturn view('admin.posts.createpost')->withCategory($category);
Передайте категории вторым аргументом в функции view
return view('admin.posts.createpost', compact('category'));