Php 如何重定向到Laravel中的另一个视图

Php 如何重定向到Laravel中的另一个视图,php,laravel-5,Php,Laravel 5,我用的是Laravel5.2。我在主页上有一个简单的表格。当用户单击该表单上的搜索时,应将其发送到注册页面。它只是一个虚拟表单,因此没有提交任何数据。我不确定我需要在路由文件中放什么。我是否也需要在控制器文件中放入一些内容?任何帮助都将不胜感激 这是我在主页上看到的 form action="{{route('register')}}" method="post" 您必须在routes文件中添加一个带有表单视图的重定向语句,有些类似于: Route::post('register' , fun

我用的是Laravel5.2。我在主页上有一个简单的表格。当用户单击该表单上的搜索时,应将其发送到注册页面。它只是一个虚拟表单,因此没有提交任何数据。我不确定我需要在路由文件中放什么。我是否也需要在控制器文件中放入一些内容?任何帮助都将不胜感激

这是我在主页上看到的

form action="{{route('register')}}" method="post"

您必须在routes文件中添加一个带有表单视图的重定向语句,有些类似于:

Route::post('register' , function(){
    return view('register.form');
});
您可以将此return语句添加到控制器中,路由文件如下所示:

Route::post('register' , 'YourControllerName@register');
和您的控制器:

public function register(){
    return view('register.form');
}
因此,在提交表单时,您希望转到“注册”页面。你为什么要这么做?如果你想这么做,@Vinicius的回答是正确的。我想您需要的是-“如果我的用户已登录,请进行搜索,而不是转到注册页面”

要实现我的建议,您必须对您的路线进行分类

因此,在routes文件中,您将定义此路由

Route::post('search', ['middleware' => 'auth', function () {
    return view('search');
}]);
此路由将确保“搜索功能”方法仅在您登录时可访问。如果laravel发现用户未登录,它将自动将用户重定向到
注册
页面

有关更多信息,请查看此。这是决定用户是否登录的中间件功能。如您所见,默认情况下,laravel会将用户重定向到登录页面。要将用户重定向到“注册”页面,请将行更改为此

return redirect()->guest('register');

您是否只需要简单的表单提交并重定向到另一个url或类似的东西(如果您未登录)就可以重定向到注册页面?您的方式可以,但如果用户已经登录,我希望在设置完成后将他们重定向到该仪表板。@Slillz很抱歉,但我有点困惑。提交表单时,您希望发生什么?如果用户已登录并提交搜索表单,则您希望他们只进行搜索。用户重定向到他们的仪表板是一个不同的问题,一旦我们解决了您当前的查询,我将回答这个问题。我希望发生的是,当未登录网站的用户单击欢迎视图上的搜索按钮时,该用户将被重定向到注册视图。在将来,一旦我设计了仪表板,如果用户已经登录,他们将被重定向到仪表板视图,但这就是问题所在。@Slillz这不是我的答案吗?如果用户未登录,他们将被重定向到“注册”页面,如果他们已登录,他们将“完成”请求,即无论post操作要求去哪里,他们都会去。所以您的表单操作将在将来指向“dashboard”。正确。我使用了您的逻辑,但由于某些原因,我收到一个错误…………未找到此服务器上未找到请求的URL/注册表。在进行了您建议的更改后,我现在收到一条错误消息……'未定义路由[寄存器]。(View:/var/www/laravel/resources/views/welcome.blade.php)。“这似乎与此表单操作有关,因为当我从“”中删除{route('register')}}并将其保留为空时。错误消失。在路由文件中,可以执行以下操作:路由::post('register',['as'=>'register','uses'=>'YourControllerName@register']); 也许它可以解决{route('register')}的问题。第一个参数是将出现在浏览器中的URI,“as”是此路由的别名,“uses”是此路由(控制器)的操作不再出现错误,但当我单击表单上的搜索时,会显示以下内容…未找到此服务器上未找到请求的URL/注册表。我把表单上的方法改为“获取”。。以下是我的routes文件中的内容。我的控制器里没有任何东西。我想我应该这样做……Route::get('/',function(){returnview('welcome');});路由::get('register',function(){return view('register');})->name('register');