Browse Source

Add controller and controller_action to route.

Taylor Otwell 12 years ago
parent
commit
21a51b7cf9
2 changed files with 26 additions and 6 deletions
  1. 12 6
      laravel/routing/controller.php
  2. 14 0
      laravel/routing/route.php

+ 12 - 6
laravel/routing/controller.php

@@ -154,13 +154,19 @@ abstract class Controller {
 		// improve speed since the bundle is not loaded on every request.
 		Bundle::start($bundle);
 
-		list($controller_name, $method) = explode('@', $destination);
+		list($name, $method) = explode('@', $destination);
 
-		$controller = static::resolve($bundle, $controller_name);
-		
-		$controller->bundle = $bundle;
-		$controller->name   = $controller_name;
-		$controller->action = $method;
+		$controller = static::resolve($bundle, $name);
+
+		// For convenience we will set the current controller and action on the
+		// Request's route instance so they can be easily accessed from the
+		// application. This is sometimes useful for dynamic situations.
+		if ( ! is_null($route = Request::route()))
+		{
+			$route->controller = $name;
+
+			$route->controller_action = $method;
+		}
 
 		// If the controller could not be resolved, we're out of options and
 		// will return the 404 error response. If we found the controller,

+ 14 - 0
laravel/routing/route.php

@@ -30,6 +30,20 @@ class Route {
 	 */
 	public $bundle;
 
+	/**
+	 * The name of the controller used by the route.
+	 *
+	 * @var string
+	 */
+	public $controller;
+
+	/**
+	 * The name of the controller action used by the route.
+	 *
+	 * @var string
+	 */
+	public $controller_action;
+
 	/**
 	 * The action that is assigned to the route.
 	 *