2015-05-28 20 views
5

Ho un'app in cui l'utente invia un modulo che esegue uno scambio SOAP per ottenere alcuni dati da un'API Web. Se ci sono troppe richieste in un certo tempo, il server Throttle nega l'accesso. Ho creato una visualizzazione degli errori personalizzata per questo chiamato throttle.blade.php che viene salvato in resources\views\pages. In routes.php ho chiamato il percorso come:Reindirizzamento a route non funzionante in Laravel 5

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

In PagesController.php ho aggiunto la funzione rilevante come:

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

Ecco la classe SoapWrapper ho creato per svolgere gli scambi 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'); 
    } 
} 
} 

Tutto funziona come dovrebbe fino a quando non raggiungo il numero massimo di richieste consentito dal server Throttle, a quel punto dovrebbe essere visualizzato m y vista personalizzata, ma viene visualizzato l'errore:

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

Non riesco a capire perché sta dicendo che il percorso non è definito.

risposta

11

Non hai definito un nome per il percorso, solo un percorso. È possibile definire il percorso in questo modo:

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

La prima parte del metodo è il percorso della rotta nel tuo caso è stato definito piace /throttle. Come secondo argomento è possibile passare array con opzioni in cui è possibile specificare il nome univoco del percorso (as) e il callback (in questo caso il controller).

È possibile leggere ulteriori informazioni sui percorsi nel numero documentation.

Problemi correlati