我正在尝试构建一个包含两个表单的页面,这两个表单都设置了method="post",并且每个表单都有一个提交<button>。第一个表单的提交操作由FirstController处理,第二个表单由SecondController处理。在路由文件web.php中,我需要为每个提交按钮声明两个路由函数,并且我希望保持相同的url,但是按钮无法知道它应该调用哪个post。我看到了一些关于创建作业来处理每个按钮的解决方案,但无论如何,我能告诉Laravel调用哪个post路由吗?
骨架如下所示:
web.php
Route::post('/', 'FirstController@store');
Route::post('/', 'SecondController@sendEmail');FirstController.php
class FirstController extends Controller
{
public function store()
{
/*
create a new entry to the data base
*/
}
}SecondController.php
class SecondController extends Controller
{
public function sendEmail()
{
Mail::to('recipient@abc.com')->send(new SampleMail());
}
}发布于 2020-07-10 23:19:34
您不能将相同的URL用于相同的方法,如POST、GET等。你能做的就是传递一些参数来识别它是用来发送邮件还是存储数据。但是你必须把它放在相同的控制器和相同的函数中。我不建议您这样做,因为它违反了SOLID中的单一责任原则。只需使用不同的URL编写两个路由,然后执行此操作。如果需要维护相同的URL,可以使用GET和POST方法来实现。
发布于 2020-07-10 22:50:38
我不确定为什么您的一个控制器不能同时处理这两个功能,但如果您真的希望将这两个步骤分开,并且不重定向用户,那么您至少应该在第一步使用ajax。
https://stackoverflow.com/questions/62836577
复制相似问题