Files
ponzi/laravel/cli/tasks/route.php
Jakobud 433318181b In the call() method, the exception wasn't being thrown if only 1 or more than 2 arguments were passed to the method. Fixed conditional statement to only accept exactly 2 arguments.
In the route() method, URI::current() was evaluating as '/' in all situations. It was never evaluating as the route that you specified when executing the command. This could be part of a larger underlying bug with Symfony's HttpFoundation\Request class. It might be a band-aid fix, but replacing URI::current() with $_SERVER['REQUEST_URI'] allows the method to run the correct route.
These fixes uncovered what I believe is potentially another bug. When var_dump($route->response()) is run, "NULL" and a newline is appended to the output. It's something to do with var_dump(), as echo $route->response() echo's the correct output without the extra "NULL".

Signed-off-by: Jakobud <jake.e.wilson@gmail.com>
2012-07-26 16:00:46 -06:00

57 lines
1.2 KiB
PHP

<?php namespace Laravel\CLI\Tasks;
use Laravel\URI;
use Laravel\Request;
use Laravel\Routing\Router;
class Route extends Task {
/**
* Execute a route and dump the result.
*
* @param array $arguments
* @return void
*/
public function call($arguments = array())
{
if ( count($arguments) != 2)
{
throw new \Exception("Please specify a request method and URI.");
}
// First we'll set the request method and URI in the $_SERVER array,
// which will allow the framework to retrieve the proper method
// and URI using the URI and Request classes.
$_SERVER['REQUEST_METHOD'] = strtoupper($arguments[0]);
$_SERVER['REQUEST_URI'] = $arguments[1];
$this->route();
echo PHP_EOL;
}
/**
* Dump the results of the currently established route.
*
* @return void
*/
protected function route()
{
// We'll call the router using the method and URI specified by
// the developer on the CLI. If a route is found, we will not
// run the filters, but simply dump the result.
$route = Router::route(Request::method(), $_SERVER['REQUEST_URI']);
if ( ! is_null($route))
{
var_dump($route->response());
}
else
{
echo '404: Not Found';
}
}
}