Cha*_*qas 1 php post laravel-routing laravel-5.1
我在页面上有两个表单都通过提交数据POST method.我想在同一个url即/ home上处理这两个请求,并为这两个表单使用不同的控制器和方法.以下是两条路线.
Route::post('home' ,'FacebookControllers\PostsController@save');
Route::post('home' , 'FacebookControllers\MessageController@storeMessage');
Run Code Online (Sandbox Code Playgroud)
在PostsController@save我正在检查
if(isset($_POST['submitPost']) && $_SERVER['REQUEST_METHOD']=='POST'){
//do something
}
Run Code Online (Sandbox Code Playgroud)
在MessageController@storeMessage我做其他形式的同样做
if(isset($_POST['sendMessage']) && $_SERVER['REQUEST_METHOD']=='POST'){
return "got it";
}
Run Code Online (Sandbox Code Playgroud)
问题是只有第二条路线有效.如果我做对或错,我不会.请引导我走向正确的方向.
Route::post('home' ,'FacebookControllers\PostsController@save');
Route::post('home' , 'FacebookControllers\MessageController@storeMessage');
Run Code Online (Sandbox Code Playgroud)
不起作用 - laravel应该如何确定发布到哪里?我将采用的方式是创建两个作业和一个路径,然后检查值Request并分派正确的作业.
首先,创建两个作业类
php artisan make:job FacebookSave
php artisan make:job FacebookStoreMessage
Run Code Online (Sandbox Code Playgroud)
生成的文件看起来很像这样:
<?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()
{
//
}
}
Run Code Online (Sandbox Code Playgroud)
在作业的handle()方法中,您可以在Controller中执行您想要执行的操作.
现在路线,让我们做
Route::post('home' ,'FacebookControllers\PostsController@findAction');
Run Code Online (Sandbox Code Playgroud)
并根据你在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';
}
Run Code Online (Sandbox Code Playgroud)
这样,将根据提交的值执行正确的操作.
将作业的构造函数更改为:
public function __construct($data)
{
$this->data = $data;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用在作业handle()方法中提交的表单访问提交的值$this->data
| 归档时间: |
|
| 查看次数: |
9244 次 |
| 最近记录: |