当试图加载页面时,我收到了ReflectionException Class /不存在的错误(打开:/var/www/laravel_guestbook/vendor/laravel/framework/src/Illuminate/Routing/ControllerInspector.php) ,可以使用一些洞察导致此错误的原因。
此外,我还在项目文件夹的根目录下运行'composer dump-autoload'无济于事。
routes.php文件
Route::controller('EntriesController', '/');
Entry.php
<?php
class Entry extends Eloquent {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'entries';
}
?>
home.blade.php
<html>
<head>
<title>Laravel 4 Guestbook</title>
</head>
<body>
@foreach ($entries as $entry)
<p>{{ $entry->comment }}</p>
<p>Posted on {{ $entry->created_at->format('M jS, Y') }} by
<a href="mailto:{{ $entry->email }}"> {{ $entry->username}}</a>
</p><hr>
@endforeach
<form action="/" method="post">
<table border="0">
<tr>
<td>Name</td>
<td><input type="text" name="frmName" value="" size="30" maxlength="50"></td>
</tr>
<tr>
<td>Email</td>
<td><input type="text" name="frmEmail" value="" size="30" maxlength="100"></td>
</tr>
<tr>
<td>Comment</td>
<td><input textarea name="frmComment" row="5" cols="30"></textarea></td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" name="submit" value="submit">
<input type="reset" name="reset" value="reset">
</td>
</tr>
</table>
</form>
</body>
EntriesController.php
<?php
class EntriesController extends BaseController {
# Handles "GET /" request
public function getIndex()
{
return View::make('home')
->with('entries', Entry::all());
}
# Handles "POST /" request
public function postIndex()
{
// get form input data
$entry = array(
'username' => Input::get('frmName'),
'email' => Input::get('frmEmail'),
'comment' => Input::get('frmComment'),
);
// save the guestbook entry to the database
Entry::create($entry);
return Redirect::to('/');
}
}
?>
答案 0 :(得分:6)
假设是:
Route::controller('/', 'EntriesController');
答案 1 :(得分:4)
如果您的命名正确但仍然出现此类错误,请执行
composer update
此命令将刷新您的作曲家自动加载文件(以及其他文件)。
答案 2 :(得分:1)
在我的情况下,文件的名称是PostController.php,但在我的内部
class Post extends \BaseController {
而不是
class PostController extends \BaseController {
我不得不将文件重命名为&#34; php artisan generate:controller&#34;命令需要指定单词控制器。