From 52ca2d35e70478dd8c24e0c0cc258a6de63ca8ed Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Wed, 21 Mar 2012 10:48:49 -0500 Subject: [PATCH] Tweaking the Form::macro method. --- laravel/form.php | 63 ++++++++++++++++++++++++------------------------ 1 file changed, 31 insertions(+), 32 deletions(-) diff --git a/laravel/form.php b/laravel/form.php index 32aff7e4..bd16787d 100644 --- a/laravel/form.php +++ b/laravel/form.php @@ -7,28 +7,25 @@ class Form { * * @var array */ - protected static $labels = array(); + public static $labels = array(); /** - * The registered custom inputs + * The registered custom macros. * * @var array */ - - protected static $inputs = array(); - - /** - * Dynamically handle calls to custom registered inputs. - */ + public static $macros = array(); - public static function __callStatic($method, $parameters) + /** + * Registers a custom macro. + * + * @param string $name + * @param Closure $input + * @return void + */ + public static function macro($name, $macro) { - if (isset(static::$inputs[$method])) - { - return call_user_func_array(static::$inputs[$method], $parameters); - } - - throw new \Exception("Method [$method] does not exist."); + static::$macros[$name] = $macro; } /** @@ -74,8 +71,7 @@ class Form { // Since PUT and DELETE methods are not actually supported by HTML forms, // we'll create a hidden input element that contains the request method - // and set the actual request method to POST. Laravel will look for the - // hidden element to determine the request method. + // and set the actual request method variable to POST. if ($method == 'PUT' or $method == 'DELETE') { $append = static::hidden(Request::spoofer, $method); @@ -83,19 +79,6 @@ class Form { return ''.$append.PHP_EOL; } - - /** - * Registers a custom input - * - * @param string $name - * @param Closure $input - * @return void - */ - - public static function register($name, $input) - { - static::$inputs[$name] = $input; - } /** * Determine the appropriate request method to use for a form. @@ -576,8 +559,7 @@ class Form { { // If an ID has been explicitly specified in the attributes, we will // use that ID. Otherwise, we will look for an ID in the array of - // label names as this makes it convenient to give input elements - // the same ID as their corresponding labels. + // label names so labels and their elements have the same ID. if (array_key_exists('id', $attributes)) { return $attributes['id']; @@ -589,4 +571,21 @@ class Form { } } + /** + * Dynamically handle calls to custom macros. + * + * @param string $method + * @param array $parameters + * @return mixed + */ + public static function __callStatic($method, $parameters) + { + if (isset(static::$inputs[$method])) + { + return call_user_func_array(static::$inputs[$method], $parameters); + } + + throw new \Exception("Method [$method] does not exist."); + } + } \ No newline at end of file