PHP-Router icon indicating copy to clipboard operation
PHP-Router copied to clipboard

Method request

Open agregator123 opened this issue 8 years ago • 2 comments

I want to submit a nice request ( i think ) For now in methods we have: GET POST etc... i want to be added one more "XHR" or "Ajax" and this one can be accepted only ajax requests. Now my controllers with ajax must be like this:

 if(parent::is_ajax()) {
 //my code
}

is_ajax function is:

  public function is_ajax() {
    return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
  }

I need this to be added and my routers will be:

$collection->attachRoute(new PHPRouter\Route('/', [
    '_controller' => 'App\Controllers\Index::Index',
    'methods' => 'AJAX',
    'parameters'=> ['template_file'=>'index'],
]));

instead

$collection->attachRoute(new PHPRouter\Route('/', [
    '_controller' => 'App\Controllers\Index::Index',
    'methods' => 'GET',
    'parameters'=> ['template_file'=>'index'],
]));

is this possible ?

agregator123 avatar Mar 28 '17 17:03 agregator123

In my opinion AJAX cannot be a HTTP Method, since you can use any of POST,GET,DELETE,PUT,... method in your ajax call, PHP-Router would not be able to distinguish POST or DELETE for example.

I think AJAX should be included in another set of caller constraint, wich could be :

  • XHR call only
  • HTTPS only
  • USER Agent only (with regex or http://php.net/manual/fr/function.fnmatch.php )
  • or any other $_SERVER data wich represent the client.

a route could be then : method: POST, XHR only, HTTPS only

lpotherat avatar Mar 29 '17 07:03 lpotherat

This will be cool. I'm waiting for update :)

agregator123 avatar Mar 29 '17 10:03 agregator123