ArticleController.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\Admin\ArticleRequest;
  5. use App\Models\Article;
  6. use Exception;
  7. use Illuminate\Http\JsonResponse;
  8. use Illuminate\Http\RedirectResponse;
  9. use Illuminate\Http\Request;
  10. use Illuminate\Http\UploadedFile;
  11. use Log;
  12. use Redirect;
  13. use Response;
  14. class ArticleController extends Controller
  15. {
  16. // 文章列表
  17. public function index(Request $request)
  18. {
  19. $view['articles'] = Article::orderByDesc('sort')->paginate(15)->appends($request->except('page'));
  20. return view('admin.article.index', $view);
  21. }
  22. // 添加文章页面
  23. public function create()
  24. {
  25. return view('admin.article.create');
  26. }
  27. // 添加文章
  28. public function store(ArticleRequest $request)
  29. {
  30. $data = $request->except('_method', '_token');
  31. // LOGO
  32. if ($request->input('type') !== '4' && $request->hasFile('logo')) {
  33. $path = $this->fileUpload($request->file('logo'));
  34. if (is_string($path)) {
  35. $data['logo'] = $path;
  36. } else {
  37. return $path;
  38. }
  39. }
  40. $article = Article::create($data);
  41. if ($article->id) {
  42. return Redirect::route('admin.article.edit', $article->id)->with('successMsg', '添加成功');
  43. }
  44. return Redirect::back()->withInput()->withErrors('添加失败');
  45. }
  46. // 图片上传
  47. public function fileUpload(UploadedFile $file)
  48. {
  49. $fileName = Str::random(8).time().'.'.$file->getClientOriginalExtension();
  50. $path = $file->storeAs('public', $fileName);
  51. if (! $path) {
  52. return Redirect::back()->withInput()->withErrors('Logo存储失败');
  53. }
  54. return 'upload/'.$fileName;
  55. }
  56. // 文章页面
  57. public function show($id)
  58. {
  59. $view['article'] = Article::find($id);
  60. return view('admin.article.show', $view);
  61. }
  62. // 编辑文章页面
  63. public function edit($id)
  64. {
  65. $view['article'] = Article::find($id);
  66. return view('admin.article.edit', $view);
  67. }
  68. // 编辑文章
  69. public function update(ArticleRequest $request, $id): RedirectResponse
  70. {
  71. $data = $request->except('_method', '_token');
  72. $data['logo'] = $data['logo'] ?? null;
  73. // LOGO
  74. if ($request->input('type') != 4 && $request->hasFile('logo')) {
  75. $path = $this->fileUpload($request->file('logo'));
  76. if (is_string($path)) {
  77. $data['logo'] = $path;
  78. } else {
  79. return $path;
  80. }
  81. }
  82. if (Article::find($id)->update($data)) {
  83. return Redirect::back()->with('successMsg', '编辑成功');
  84. }
  85. return Redirect::back()->withErrors('编辑失败');
  86. }
  87. // 删除文章
  88. public function destroy($id): JsonResponse
  89. {
  90. try {
  91. Article::find($id)->delete();
  92. } catch (Exception $e) {
  93. Log::error('删除文章失败:'.$e->getMessage());
  94. return Response::json(
  95. ['status' => 'fail', 'message' => '删除失败:'.$e->getMessage()]
  96. );
  97. }
  98. return Response::json(['status' => 'success', 'message' => '删除成功']);
  99. }
  100. }