Laravel 5 Laravel 5重定向到控制器操作
如果我想重定向到控制器的操作。必须在Laravel 5 Laravel 5重定向到控制器操作,laravel-5,laravel-5.2,Laravel 5,Laravel 5.2,如果我想重定向到控制器的操作。必须在routes.php中注册此控制器操作吗?是的,routes.php文件必须包含有关URL和控制器/操作的详细信息: // Get route Route::get('/page', 'MyController@action'); // Post route Route::post('/login', 'LoginController@login'); 如果要使用如下重定向: return redirect()->action('AnotherCont
routes.php
中注册此控制器操作吗?是的,routes.php
文件必须包含有关URL和控制器/操作的详细信息:
// Get route
Route::get('/page', 'MyController@action');
// Post route
Route::post('/login', 'LoginController@login');
如果要使用如下重定向:
return redirect()->action('AnotherController@someMethod');
此操作必须在routes.php文件中注册
但要小心:它只适用于获取可靠的路由
您可以通过键入来查看可用的操作
php artisan route:list
在你的终点站
我为测试目的设置了一些文件(似乎laravel在尝试重定向到非GET方法时,正在重定向到具有相同参数签名的可用GET方法:
// routes.php
Route::group(['middleware' => ['web']], function () {
Route::get('start', 'TestController@start');
// routes, we could redirect to
// get route
Route::get('test', 'AnotherController@test');
// post route
Route::post('testPost', 'AnotherController@testPost');
// setup a resource with index, store, update, delete and show actions
Route::resource('resource', 'AnotherController');
});
用于重定向的测试控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
class TestController extends Controller
{
public function start()
{
// works
return redirect()->action('AnotherController@test');
// method not allowed exception
return redirect()->action('AnotherController@testPost');
/**
* Redirecting to routes setup via Route::resource
*/
// works
return redirect()->action('AnotherController@index');
// redirects to 'AnotherController@index'
return redirect()->action('AnotherController@store');
// error: Missing required parameters for [Route: resource.destroy] [URI: resource/{resource}].
return redirect()->action('AnotherController@destroy');
// redirects to 'AnotherController@show'
return redirect()->action('AnotherController@destroy', 1);
// Missing required parameters for [Route: resource.update] [URI: resource/{resource}].
return redirect()->action('AnotherController@update');
// redirects to 'AnotherController@show'
return redirect()->action('AnotherController@update', 1);
}
}
这有点宽泛,这个问题有两大答案-取决于上下文。重定向到post路由将无法正常工作(假设您使用的是redirect()->action())我只是展示了routes.php
文件将包含哪些内容的示例,因为这就是问题所在,所以问题并没有具体询问重定向应该如何完成。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
class AnotherController extends Controller
{
public function test()
{
dd('i am test');
}
public function testPost()
{
dd('i am testPost');
}
/**
* Resourceful routes below
*/
public function index()
{
dd ('I am index');
}
public function store()
{
dd ('I am store');
}
public function destroy($id)
{
dd('I am destroy');
}
public function show($id)
{
dd('I am show');
}
public function update($id)
{
dd('I am update');
}
}