Ich benutze Silex framework für Mocking REST-Server. Ich muss uri für OPTIONS http Methode erstellen, aber Application
Klasse bietet nur Methoden für PUT, GET, POST und DELETE. Ist es möglich, eine benutzerdefinierte HTTP-Methode hinzuzufügen und zu verwenden?Silex - OPTIONS Methode
6
A
Antwort
4
Ich habe das gleiche gemacht, aber ich kann mich nicht gut daran erinnern, wie ich es geschafft habe, es zum Laufen zu bringen. Ich kann es jetzt nicht versuchen. Sicherlich müssen Sie die ControllerCollection
erweitern:
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');
}
}
Und dann in Ihrem benutzerdefinierten verwenden es Application
Klasse:
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
Da diese Frage immer noch hoch bewertet in Google-Suchanfragen kommt, ich ll beachten sie, dass jetzt, dass es einige Jahre später ist, hinzugefügt Silex eine Behandlungsmethode für OPTIONS
http://silex.sensiolabs.org/doc/usage.html#other-methods
Die aktuelle Liste der Verben, die direkt als Funktionsaufrufe verwendet werden können, sind: get
, post
, put
, delete
, patch
, options
. Also:
$app->options('/blog/{id}', function($id) {
// ...
});
Sollte gut funktionieren.
Großartig, wirklich einfach, danke! –
@PeterKrejci hat es funktioniert? Ich kann es nicht testen ... – gremo
Ja, ohne jedes Problem. –