ContactController.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use App\Services\LiquidRenderer;
  5. use App\Models\DistInquiry;
  6. class ContactController extends Controller
  7. {
  8. protected $liquidRenderer;
  9. public function __construct(LiquidRenderer $liquidRenderer)
  10. {
  11. $this->liquidRenderer = $liquidRenderer;
  12. }
  13. function create()
  14. {
  15. // 构建导航数据 开始
  16. $breadcrumbs = [
  17. [
  18. 'url' => '/',
  19. 'name' => 'Home',
  20. ]
  21. ];
  22. $breadcrumbs[] = [
  23. 'url' => '#',
  24. 'name' => 'Contact Us',
  25. ];
  26. //模板支持多级目录,需要目录符号
  27. $output = LiquidRenderer::render('contact_create.liquid', [
  28. 'csrf_token' => csrf_token(),
  29. 'breadcrumbs' => $breadcrumbs,
  30. ]);
  31. return response($output);
  32. }
  33. function store(Request $request)
  34. {
  35. try {
  36. // 验证 CSRF Token
  37. if (!$request->has('_token') || $request->input('_token') !== csrf_token()) {
  38. return response()->json([
  39. 'status' => 'error',
  40. 'message' => 'Invalid token.',
  41. ], 403); // 返回 HTTP 403 错误
  42. }
  43. // 从请求中获取所有数据
  44. $data = $request->all();
  45. // 指定特殊字段的值
  46. $data['dist_id'] = 0; // app('dist')->id; // 指定当前登录的分销商ID
  47. $data['referer_url']=$request->headers->get('referer'); // 获取上一页的URL
  48. $data['ip_address'] = $request->ip(); // 获取用户IP地址
  49. $data['order_number']= generateOrderNumber('ORD');
  50. // 使用模型的 create 方法插入数据
  51. $distInquiry = DistInquiry::create($data);
  52. // 如果插入失败,抛出异常
  53. if (!$distInquiry) {
  54. throw new \Exception('submit failed, please try again later. ');
  55. }
  56. // 成功时的响应
  57. $response = [
  58. 'status' => 'success'
  59. ];
  60. return response()->json($response, 200);
  61. } catch (\Exception $e) {
  62. // 捕获所有异常并返回错误信息
  63. $response = [
  64. 'status' => 'error',
  65. 'message' => 'submit failed, please try again later. ',
  66. ];
  67. return response()->json($response, 500); // 返回 HTTP 500 错误
  68. }
  69. }
  70. }