Laravel 5重定向到控制器操作

Den*_*eng 11 laravel-5 laravel-5.2

如果我想重定向到控制器的动作.此控制器操作必须注册routes.php吗?

sho*_*ild 13

如果要使用这样的重定向:

return redirect()->action('AnotherController@someMethod');
Run Code Online (Sandbox Code Playgroud)

此操作必须在routes.php文件中注册.

但要小心:它只适用于可靠的GET路线.

您可以通过键入来查看可用的操作

php artisan route:list
Run Code Online (Sandbox Code Playgroud)

在你的终端.

我已经设置了一些文件用于测试目的(当尝试重定向到非get方法时,似乎laravel重定向到具有相同参数签名的可用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');


});
Run Code Online (Sandbox Code Playgroud)

一个测试控制器,用于重定向

<?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);
    }
}
Run Code Online (Sandbox Code Playgroud)

另一个控制器,我重定向到:

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


}
Run Code Online (Sandbox Code Playgroud)