gpt4 book ai didi

php - 处理对同一 url Laravel 5 的多个发布请求

转载 作者:行者123 更新时间:2023-12-02 07:25:38 25 4
gpt4 key购买 nike

我在一个页面上有两个表单,它们都通过 POST 方法 提交数据。我想处理同一 url 上的两个请求,即/home 并为两种形式使用不同的 Controller 和方法。以下是两条路线。

Route::post('home' ,'FacebookControllers\PostsController@save');
Route::post('home' , 'FacebookControllers\MessageController@storeMessage');

PostsController@save 我正在检查

if(isset($_POST['submitPost']) && $_SERVER['REQUEST_METHOD']=='POST'){
//do something
}

MessageController@storeMessage 中,我对其他表单也做同样的事情

if(isset($_POST['sendMessage']) && $_SERVER['REQUEST_METHOD']=='POST'){
return "got it";
}

问题是只有第二条路线有效。不管我做对还是错,我都不会。请引导我走向正确的方向。

最佳答案

Route::post('home' ,'FacebookControllers\PostsController@save');
Route::post('home' , 'FacebookControllers\MessageController@storeMessage');

行不通 - Laravel 应该如何确定发布到哪里?我要走的路是创建两个作业和一个路由,然后检查 Request 中的值并分派(dispatch)正确的作业。

首先,创建两个作业类

php artisan make:job FacebookSave
php artisan make:job FacebookStoreMessage

生成的文件看起来像这样:

<?php

namespace App\Jobs;

use App\Jobs\Job;
use Illuminate\Contracts\Bus\SelfHandling;

class FacebookSaveMessage extends Job implements SelfHandling
{
/**
* Create a new job instance.
*
* @return void
*/
public function __construct()
{
//
}

/**
* Execute the job.
*
* @return void
*/
public function handle()
{
//
}
}

在作业的 handle() 方法中,您可以在 Controller 中执行您想执行的操作。

现在的路线,让我们做

Route::post('home' ,'FacebookControllers\PostsController@findAction');

并根据此在您的 PostsController 中添加一个方法(我称之为 findAction),如下所示:

public function findAction(\Illuminate\Http\Request $request) {
if ($request->has('submitPost')) {
return $this->dispatch(new \App\Jobs\FacebookSave($request));
} else if ($request->has('storeMessage')) {
return $this->dispatch(new \App\Jobs\FacebookStoreMessage($request));
}
return 'no action found';
}

这样,将根据提交的值执行正确的操作。

将作业的构造函数更改为如下内容:

public function __construct($data)
{
$this->data = $data;
}

并且您可以使用 $this->data

从作业的 handle() 方法中提交的表单访问提交的值

关于php - 处理对同一 url Laravel 5 的多个发布请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32279329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com