Sto usando Silex framework per il server REST. Devo creare uri per il metodo http OPTIONS, ma la classe Application
offre solo metodi per PUT, GET, POST e DELETE. È possibile aggiungere e utilizzare un metodo http personalizzato?Silex - metodo OPZIONI
6
A
risposta
4
Ho fatto la stessa cosa ma non riesco a ricordare molto bene come sono riuscito a farlo funzionare. Non posso provarlo adesso. Di sicuro è necessario estendere la ControllerCollection
:
class MyControllerCollection extends ControllerCollection
{
/**
* Maps an OPTIONS request to a callable.
*
* @param string $pattern Matched route pattern
* @param mixed $to Callback that returns the response when matched
*
* @return Controller
*/
public function options($pattern, $to)
{
return $this->match($pattern, $to)->method('OPTIONS');
}
}
E poi utilizzarlo nella vostra abitudine Application
classe:
class MyApplication extends Application
{
public function __construct()
{
parent::__construct();
$app = $this;
$this['controllers_factory'] = function() use ($app) {
return new MyControllerCollection($app['route_factory']);
};
}
/**
* Maps an OPTIONS request to a callable.
*
* @param string $pattern Matched route pattern
* @param mixed $to Callback that returns the response when matched
*
* @return Controller
*/
public function options($pattern, $to)
{
return $this['controllers']->options($pattern, $to);
}
}
3
Dal momento che questa domanda viene ancora in piedi altamente classificato nelle ricerche di Google, Sono ll notare che ora che è diversi anni più tardi, Silex aggiunto un metodo di gestore per OPTIONS
http://silex.sensiolabs.org/doc/usage.html#other-methods
L'attuale elenco dei verbi che può essere utilizzato come funzione chiama direttamente sono: get
, post
, put
, delete
, patch
, options
. Quindi:
$app->options('/blog/{id}', function($id) {
// ...
});
Dovrebbe funzionare bene.
Ottimo, davvero facile, grazie! –
@PeterKrejci ha funzionato? Non riesco a testarlo ... – gremo
Sì, senza alcun problema. –