我在同一页面上有两个联系表单(引导程序模式窗口)。问题在于其中之一无法正常工作,并返回404 Not Found
错误。
我在web.php
中有这个
Route::post('/b2b_contact','HomeController@b2b_contact')->name('b2b_contact');
Route::post('/','HomeController@contact')->name('contact');
HomeController.php
函数
public function contact(Request $request)
{
$data = array(
'first_name' => $request->first_name,
'company_name' => $request->company_name,
'country' => $request->country,
'email' => $request->email,
);
DB::table('contact')->insert($data);
return Redirect::to('/')->with('message', 'Thank you!');
}
public function b2b_contact(Request $request)
{
$data = array(
'first_name' => $request->first_name,
'company_name' => $request->company_name,
'country' => $request->country,
'email' => $request->email,
);
DB::table('b2b_contact')->insert($data);
return Redirect::to('/')->with('message', 'Thank you!');
}
刀片式模板中的内容是表格
{{Form::open(array('route'=>'b2b_contact','files' => true,'method'=>'post', ))}}
// input fields here
{{Form::close()}}
{{Form::open(array('route'=>'contact','files' => true,'method'=>'post', ))}}
// input fields here
{{Form::close()}}
第二种形式contact
可以正常工作,但是b2b_contact
返回错误404。
我也曾尝试在web.php中创建两条路由,例如Route::post('/',....
,但找不到b2b_contact
路由的页面返回错误。
那么,有人可以在这里帮助我如何在同一页面上有2个联系表单,以及何时提交以重新加载页面并显示成功消息吗?
更新:这是我提交页面时看到的,是的,调试设置为true
未找到
在此服务器上找不到请求的URL / applyNow。
此外,尝试使用ErrorDocument处理请求时遇到404未找到错误。
更新2:公共目录中的.htaccess
文件
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
答案 0 :(得分:1)
我使用Laravel 5.8和XAMPP在本地尝试了设置。当我将Laravel项目复制到/htdocs
时,我到Laravel主页的路径是/htdocs/public
。在浏览器中,我必须输入http://localhost/public/
,或者需要更改Apache配置,例如,通过laravel.local
提供公用文件夹。
具有上述设置并单击表单链接,您的浏览器将尝试POST到以下URL:http://localhost/b2b_contact
-该地址不存在,因为我们需要POST到http://localhost/public/b2b_contact
。
为什么它适用于/contact
而不适用于/b2b_contact
?
在路线文件中,您可以如下定义路线:
Route::post('/b2b_contact','HomeController@b2b_contact')->name('b2b_contact');
Route::post('/','HomeController@contact')->name('contact');
/contact
路由甚至都没有称为contact
,而是/
-这是您的vhosts根目录。根据您对初始帖子的评论,您的Laravel安装目录(vendor
文件夹等)似乎位于/var/www/html
内部,并且您正在调用public
目录。我对此不太确定,但请尝试修复您的目录结构。