You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
1.2 KiB

  1. <?php
  2. namespace App\Http\Controllers\Home;
  3. use App\Http\Controllers\Home\CommonController;
  4. use Illuminate\Support\Facades\DB;
  5. use Illuminate\Http\Request;
  6. class PageController extends BaseController
  7. {
  8. public function __construct()
  9. {
  10. parent::__construct();
  11. }
  12. //单页面
  13. public function detail($id)
  14. {
  15. $data = [];
  16. if (!empty($id) && preg_match('/[a-z0-9]+/', $id)) {
  17. $where = function ($query) use ($id) {
  18. $query->where('id', '=', $id)->orWhere('filename', '=', $id);
  19. };
  20. $post = cache("pageid$id");
  21. if (!$post) {
  22. $post = object_to_array(DB::table('page')->where($where)->first(), 1);
  23. //cache("pageid$id", $post, 2592000);
  24. cache(["pageid$id" => $post], \Carbon\Carbon::now()->addMinutes(2592000));
  25. }
  26. if (!$post) {
  27. return redirect()->route('page404');
  28. }
  29. $data['post'] = $post;
  30. } else {
  31. return redirect()->route('page404');
  32. }
  33. $data['posts'] = object_to_array(DB::table('page')->orderBy(\DB::raw('rand()'))->take(5)->get());
  34. return view('home.page.detail', $data);
  35. }
  36. }