2015-05-28 18 views
5

Mam aplikację, w której użytkownik przesyła formularz, który wykonuje wymianę SOAP w celu pobrania niektórych danych z interfejsu Web API. Jeśli w określonym czasie pojawi się zbyt wiele żądań, serwer przepustnicy odmówi dostępu. Mam niestandardowy widok błędu dla tego o nazwie throttle.blade.php, który jest zapisany pod resources\views\pages. W routes.php nazwałem trasę jako:Przekierowanie do trasy nie działa w Laravel 5

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

w PagesController.php dodałem odpowiednią funkcję:

public function throttleError() { 
    return view('pages.throttle'); 
} 

Oto klasa SoapWrapper Stworzyłem wykonać wymianę SOAP:

<?php namespace App\Models; 

use SoapClient; 
use Illuminate\Http\RedirectResponse; 
use Redirect; 

class SoapWrapper { 

public function soapExchange() { 

    try { 
     // set WSDL for authentication 
     $auth_url = "http://search.webofknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate?wsdl"; 

     // set WSDL for search 
     $search_url = "http://search.webofknowledge.com/esti/wokmws/ws/WokSearch?wsdl"; 

     // create SOAP Client for authentication 
     $auth_client = @new SoapClient($auth_url); 

     // create SOAP Client for search 
     $search_client = @new SoapClient($search_url); 

     // run 'authenticate' method and store as variable 
     $auth_response = $auth_client->authenticate(); 

     // add SID (SessionID) returned from authenticate() to cookie of search client 
     $search_client->__setCookie('SID', $auth_response->return); 

    } catch (\SoapFault $e) { 
     // if it fails due to throttle error, route to relevant view 
     return Redirect::route('throttle'); 
    } 
} 
} 

Wszystko działa tak, jak powinno, dopóki nie osiągnę maksymalnej liczby żądań dozwolonych przez serwer przepustnicy, w którym to momencie powinien wyświetlać m y niestandardowy widok, ale wyświetla błąd:

InvalidArgumentException in UrlGenerator.php line 273: 
Route [throttle] not defined. 

Nie mogę zrozumieć, dlaczego mówi, że trasa nie jest zdefiniowana.

Odpowiedz

11

Nie zdefiniowałeś nazwy swojej trasy, a jedynie ścieżkę. Można zdefiniować swoją trasę tak:

Route::get('throttle', ['as' => 'throttle', 'uses' => '[email protected]']); 

Pierwszym elementem metody jest ścieżka trasy w przypadku określonym go jak /throttle. Jako drugi argument możesz przekazać tablicę z opcjami, w których możesz podać unikalną nazwę trasy (as) i wywołanie zwrotne (w tym przypadku kontroler).

Możesz przeczytać więcej o trasach w documentation.