accepts() public method

#### Get all types: $this->request->accepts(); #### Check for a single type: $this->request->accepts('application/json'); This method will order the returned content types by the preference values indicated by the client.
public accepts ( string $type = null ) : mixed
$type string The content type to check for. Leave null to get all types a client accepts.
return mixed Either an array of all the types the client accepts or a boolean if they accept the provided type.
 /**
  * Determines which content types the client accepts.  Acceptance is based on
  * the file extension parsed by the Router (if present), and by the HTTP_ACCEPT
  * header. Unlike CakeRequest::accepts() this method deals entirely with mapped content types.
  *
  * Usage:
  *
  * `$this->RequestHandler->accepts(array('xml', 'html', 'json'));`
  *
  * Returns true if the client accepts any of the supplied types.
  *
  * `$this->RequestHandler->accepts('xml');`
  *
  * Returns true if the client accepts xml.
  *
  * @param mixed $type Can be null (or no parameter), a string type name, or an
  *   array of types
  * @return mixed If null or no parameter is passed, returns an array of content
  *   types the client accepts.  If a string is passed, returns true
  *   if the client accepts it.  If an array is passed, returns true
  *   if the client accepts one or more elements in the array.
  * @see RequestHandlerComponent::setContent()
  */
 public function accepts($type = null)
 {
     $accepted = $this->request->accepts();
     if ($type == null) {
         return $this->mapType($accepted);
     } elseif (is_array($type)) {
         foreach ($type as $t) {
             $t = $this->mapAlias($t);
             if (in_array($t, $accepted)) {
                 return true;
             }
         }
         return false;
     } elseif (is_string($type)) {
         $type = $this->mapAlias($type);
         return in_array($type, $accepted);
     }
     return false;
 }
 /**
  * Determines which content types the client accepts. Acceptance is based on
  * the file extension parsed by the Router (if present), and by the HTTP_ACCEPT
  * header. Unlike CakeRequest::accepts() this method deals entirely with mapped content types.
  *
  * Usage:
  *
  * `$this->RequestHandler->accepts(array('xml', 'html', 'json'));`
  *
  * Returns true if the client accepts any of the supplied types.
  *
  * `$this->RequestHandler->accepts('xml');`
  *
  * Returns true if the client accepts xml.
  *
  * @param string|array $type Can be null (or no parameter), a string type name, or an
  *                           array of types
  *
  * @return mixed If null or no parameter is passed, returns an array of content
  *   types the client accepts. If a string is passed, returns true
  *   if the client accepts it. If an array is passed, returns true
  *   if the client accepts one or more elements in the array.
  * @see RequestHandlerComponent::setContent()
  */
 public function accepts($type = NULL)
 {
     $accepted = $this->request->accepts();
     if (!$type) {
         return $this->mapType($accepted);
     }
     if (is_array($type)) {
         foreach ($type as $t) {
             $t = $this->mapAlias($t);
             if (in_array($t, $accepted)) {
                 return TRUE;
             }
         }
         return FALSE;
     }
     if (is_string($type)) {
         return in_array($this->mapAlias($type), $accepted);
     }
     return FALSE;
 }
 /**
  * Content types from accepts() should respect the client's q preference values.
  *
  * @return void
  */
 public function testAcceptWithQvalueSorting()
 {
     $_SERVER['HTTP_ACCEPT'] = 'text/html;q=0.8,application/json;q=0.7,application/xml;q=1.0';
     $request = new CakeRequest('/', false);
     $result = $request->accepts();
     $expected = array('application/xml', 'text/html', 'application/json');
     $this->assertEquals($expected, $result);
 }
Example #4
0
 /**
  * test accepts() with and without parameters
  *
  * @return void
  */
 function testAccepts()
 {
     $_SERVER['HTTP_ACCEPT'] = 'text/xml,application/xml;q=0.9,application/xhtml+xml,text/html,text/plain,image/png';
     $request = new CakeRequest('/', false);
     $result = $request->accepts();
     $expected = array('text/xml', 'application/xml', 'application/xhtml+xml', 'text/html', 'text/plain', 'image/png');
     $this->assertEquals($expected, $result, 'Content types differ.');
     $result = $request->accepts('text/html');
     $this->assertTrue($result);
     $result = $request->accepts('image/gif');
     $this->assertFalse($result);
 }