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');
    }


}