webentwicklung-frage-antwort-db.com.de

Laravel 5 Weiterleiten an Controller-Aktionen

Wenn ich zur Aktion eines Controllers umleiten möchte. Muss diese Controller-Aktion in routes.php registriert werden?

8
DengDeng

Wenn Sie eine Umleitung wie folgt verwenden möchten: 

return redirect()->action('[email protected]');

Diese Aktion muss in der Datei routes.php registriert werden. 

Aber Vorsicht: Es funktioniert nur mit GET-Routen zuverlässig.

Sie können die verfügbaren Aktionen anzeigen, indem Sie sie eingeben 

php artisan route:list

in Ihrem Terminal. 

Ich habe einige Dateien zu Testzwecken eingerichtet (scheint, als würde Laravel zu verfügbaren GET-Methoden mit derselben Parametersignatur umleiten, wenn versucht wird, zu nicht-get-Methoden umzuleiten: 

// routes.php

Route::group(['middleware' => ['web']], function () {

Route::get('start', '[email protected]');



// routes, we could redirect to

// get route
Route::get('test', '[email protected]');

// post route
Route::post('testPost', '[email protected]');


// setup a resource with index, store, update, delete and show actions
Route::resource('resource', 'AnotherController');


});

Ein Test Controller, der zur Umleitung verwendet wird

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;

class TestController extends Controller
{
    public function start()
    {

        // works
        return redirect()->action('[email protected]');

        // method not allowed exception
        return redirect()->action('[email protected]');


        /**
         *  Redirecting to routes setup via Route::resource
         */

        // works
        return redirect()->action('[email protected]');

        // redirects to '[email protected]'
        return redirect()->action('[email protected]');


        // error: Missing required parameters for [Route: resource.destroy] [URI: resource/{resource}].
        return redirect()->action('[email protected]');

        // redirects to '[email protected]'
        return redirect()->action('[email protected]', 1);

        // Missing required parameters for [Route: resource.update] [URI: resource/{resource}].
        return redirect()->action('[email protected]');

        // redirects to '[email protected]'
        return redirect()->action('[email protected]', 1);
    }
}

Ein anderer Controller, zu dem ich weitergeleitet werde: 

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


}
10
shock_gone_wild

Ja, die routes.php-Datei muss Details zu URL und Controller/Aktion enthalten:

// Get route
Route::get('/page', '[email protected]');
// Post route
Route::post('/login', '[email protected]');
0
Niraj Shah