adding support for filter patterns.
Signed-off-by: Taylor Otwell <taylorotwell@gmail.com>
This commit is contained in:
parent
9954482194
commit
01ddff5cdc
|
@ -13,6 +13,13 @@ class Filter {
|
||||||
*/
|
*/
|
||||||
public static $filters = array();
|
public static $filters = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The route filters that are based on pattern.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public static $patterns = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* All of the registered filter aliases.
|
* All of the registered filter aliases.
|
||||||
*
|
*
|
||||||
|
@ -39,7 +46,17 @@ public static function register($name, Closure $callback)
|
||||||
{
|
{
|
||||||
if (isset(static::$aliases[$name])) $name = static::$aliases[$name];
|
if (isset(static::$aliases[$name])) $name = static::$aliases[$name];
|
||||||
|
|
||||||
static::$filters[$name] = $callback;
|
if (starts_with($name, 'pattern: '))
|
||||||
|
{
|
||||||
|
foreach (explode(', ', substr($name, 9)) as $pattern)
|
||||||
|
{
|
||||||
|
static::$patterns[$pattern] = $callback;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
static::$filters[$name] = $callback;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -116,10 +116,13 @@ protected static function format($uri)
|
||||||
* Determine if the current URI matches a given pattern.
|
* Determine if the current URI matches a given pattern.
|
||||||
*
|
*
|
||||||
* @param string $pattern
|
* @param string $pattern
|
||||||
|
* @param string $uri
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public static function is($pattern)
|
public static function is($pattern, $uri = null)
|
||||||
{
|
{
|
||||||
|
$uri = $uri ?: static::current();
|
||||||
|
|
||||||
// Asterisks are translated into zero-or-more regular expression wildcards
|
// Asterisks are translated into zero-or-more regular expression wildcards
|
||||||
// to make it convenient to check if the URI starts with a given pattern
|
// to make it convenient to check if the URI starts with a given pattern
|
||||||
// such as "library/*". This is only done when not root.
|
// such as "library/*". This is only done when not root.
|
||||||
|
@ -132,7 +135,7 @@ public static function is($pattern)
|
||||||
$pattern = '^/$';
|
$pattern = '^/$';
|
||||||
}
|
}
|
||||||
|
|
||||||
return preg_match('#'.$pattern.'#', static::current());
|
return preg_match('#'.$pattern.'#', $uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue