我遇到了以下问题。我已经像文档中那样新安装了Laravel。 当我访问我的链接时,它显示“你到了”。所以它应该工作。 然后我上传了一个名为UserController.php的新控制器。 代码如下:
<?php
use App\Transformer\CheckinTransformer;
use App\Transformer\UserTransformer;
class UserController extends ApiController
{
public function index()
{
return "Oh hai!";
}
}
然后我也让ApiController处理了一些错误。代码如下:
<?php
use League\Fractal\Resource\Collection;
use League\Fractal\Resource\Item;
use League\Fractal\Manager;
use Symfony\Component\Yaml\Dumper as YamlDumper;
class ApiController extends Controller
{
protected $statusCode = 200;
const CODE_WRONG_ARGS = 'GEN-FUBARGS';
const CODE_NOT_FOUND = 'GEN-LIKETHEWIND';
const CODE_INTERNAL_ERROR = 'GEN-AAAGGH';
const CODE_UNAUTHORIZED = 'GEN-MAYBGTFO';
const CODE_FORBIDDEN = 'GEN-GTFO';
const CODE_INVALID_MIME_TYPE = 'GEN-UMWUT';
public function __construct(Manager $fractal)
{
$this->fractal = $fractal;
// Are we going to try and include embedded data?
$this->fractal->setRequestedScopes(explode(',', Input::get('embed')));
$this->fireDebugFilters();
}
public function fireDebugFilters()
{
$this->beforeFilter(function () {
Event::fire('clockwork.controller.start');
});
$this->afterFilter(function () {
Event::fire('clockwork.controller.end');
});
}
/**
* Getter for statusCode
*
* @return mixed
*/
public function getStatusCode()
{
return $this->statusCode;
}
/**
* Setter for statusCode
*
* @param int $statusCode Value to set
*
* @return self
*/
public function setStatusCode($statusCode)
{
$this->statusCode = $statusCode;
return $this;
}
protected function respondWithItem($item, $callback)
{
$resource = new Item($item, $callback);
$rootScope = $this->fractal->createData($resource);
return $this->respondWithArray($rootScope->toArray());
}
protected function respondWithCollection($collection, $callback)
{
$resource = new Collection($collection, $callback);
$rootScope = $this->fractal->createData($resource);
return $this->respondWithArray($rootScope->toArray());
}
protected function respondWithArray(array $array, array $headers = [])
{
$mimeTypeRaw = Input::server('HTTP_ACCEPT', '*/*');
// If its empty or has */* then default to JSON
if ($mimeTypeRaw === '*/*') {
$mimeType = 'application/json';
} else {
// You will probably want to do something intelligent with charset if provided.
// This chapter just assumes UTF8 everything everywhere.
$mimeParts = (array) explode(';', $mimeTypeRaw);
$mimeType = strtolower($mimeParts[0]);
}
switch ($mimeType) {
case 'application/json':
$contentType = 'application/json';
$content = json_encode($array);
break;
case 'application/x-yaml':
$contentType = 'application/x-yaml';
$dumper = new YamlDumper();
$content = $dumper->dump($array, 2);
break;
default:
$contentType = 'application/json';
$content = json_encode([
'error' => [
'code' => static::CODE_INVALID_MIME_TYPE,
'http_code' => 415,
'message' => sprintf('Content of type %s is not supported.', $mimeType),
]
]);
}
$response = Response::make($content, $this->statusCode, $headers);
$response->header('Content-Type', $contentType);
return $response;
}
protected function respondWithError($message, $errorCode)
{
if ($this->statusCode === 200) {
trigger_error(
"You better have a really good reason for erroring on a 200...",
E_USER_WARNING
);
}
return $this->respondWithArray([
'error' => [
'code' => $errorCode,
'http_code' => $this->statusCode,
'message' => $message,
]
]);
}
/**
* Generates a Response with a 403 HTTP header and a given message.
*
* @return Response
*/
public function errorForbidden($message = 'Forbidden')
{
return $this->setStatusCode(403)->respondWithError($message, self::CODE_FORBIDDEN);
}
/**
* Generates a Response with a 500 HTTP header and a given message.
*
* @return Response
*/
public function errorInternalError($message = 'Internal Error')
{
return $this->setStatusCode(500)->respondWithError($message, self::CODE_INTERNAL_ERROR);
}
/**
* Generates a Response with a 404 HTTP header and a given message.
*
* @return Response
*/
public function errorNotFound($message = 'Resource Not Found')
{
return $this->setStatusCode(404)->respondWithError($message, self::CODE_NOT_FOUND);
}
/**
* Generates a Response with a 401 HTTP header and a given message.
*
* @return Response
*/
public function errorUnauthorized($message = 'Unauthorized')
{
return $this->setStatusCode(401)->respondWithError($message, self::CODE_UNAUTHORIZED);
}
/**
* Generates a Response with a 400 HTTP header and a given message.
*
* @return Response
*/
public function errorWrongArgs($message = 'Wrong Arguments')
{
return $this->setStatusCode(400)->respondWithError($message, self::CODE_WRONG_ARGS);
}
}
我已将/ users路由添加到routes.php文件中,如下所示:
<?php
Route::get('/', function()
{
return View::make('hello');
});
Route::get('/users', 'UserController@index');
但是当我现在尝试访问/ public / users时 我只收到这个错误: ReflectionException Class League \ Fractal \ Manager不存在
到目前为止我尝试删除了vendor文件夹和composer.lock并再次安装了但是:composer install --prefer-source而不是composer install 但它没有改变任何东西。
我现在真的不知道什么是错的,我希望你能帮助我。