adding support for filter patterns.
Signed-off-by: Taylor Otwell <taylorotwell@gmail.com>
This commit is contained in:
@@ -13,6 +13,13 @@ class Filter {
|
||||
*/
|
||||
public static $filters = array();
|
||||
|
||||
/**
|
||||
* The route filters that are based on pattern.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $patterns = array();
|
||||
|
||||
/**
|
||||
* All of the registered filter aliases.
|
||||
*
|
||||
@@ -39,7 +46,17 @@ class Filter {
|
||||
{
|
||||
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 @@ class URI {
|
||||
* Determine if the current URI matches a given pattern.
|
||||
*
|
||||
* @param string $pattern
|
||||
* @param string $uri
|
||||
* @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
|
||||
// to make it convenient to check if the URI starts with a given pattern
|
||||
// such as "library/*". This is only done when not root.
|
||||
@@ -132,7 +135,7 @@ class URI {
|
||||
$pattern = '^/$';
|
||||
}
|
||||
|
||||
return preg_match('#'.$pattern.'#', static::current());
|
||||
return preg_match('#'.$pattern.'#', $uri);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user