我正在尝试将数据保存到数据库,但它没有保存,并说没有找到该对象,任何人都可以建议我解决方案,我正在按照本教程:https://laracasts.com/series/laravel-from-scratch-2018/episodes/10
控制器:
public function index()
{
$projects = Project::all();
return view('projects.index', compact('projects'));
}
public function create()
{
return view('projects.create');
}
public function store()
{
$project = new Project();
$project->title = request('title');
$project->description = request('description');
$project->save();
return redirect('/projects');
}
路线:
Route::get('/projects','ProjectsController@index');
Route::post('/projects','ProjectsController@store');
Route::get('/projects/create','ProjectsController@create');
create.blade.php:
<form method="POST" action="/projects">
{{ csrf_field() }}
<div>
<input type="text" name="title" placeholder="Project title">
</div>
<div>
<textarea name="description" placeholder="Project description"></textarea>
</div>
<div>
<button type="submit">Create Project</button>
</div>
</form>
index.blade.php:
@foreach($projects as $project)
<li>{{ $project->title }}</li>
@endforeach
您在适当配置的网站下发布的Laravel代码是正确的。您的评论中的错误:
找不到对象!在此服务器上找不到请求的URL。引用页面上的链接似乎是错误的或过时的。请通知该页面的作者有关错误的信息。如果您认为这是服务器错误,请与网站管理员联系。错误404 localhost Apache / 2.4.33(Win32)OpenSSL / 1.1.0h PHP / 7.2.7
是一个Apache错误页面,这意味着它根本不是从您的laravel项目请求页面。数据可能会保存在您的数据库中,但随后您将重定向到项目外部的页面,而Apache无法找到它。
您的网站位于http://localhost/laravel/public
,这意味着您需要访问http://localhost/laravel/public/projects
的项目页面。然而,redirect('/projects')
为您提供绝对路径而不是相对路径,将您发送到不存在的http://localhost/projects
。
由于这是一个本地开发项目,我将跳过Apache配置不当的问题,并专注于避免错误的其他方法。
使用named route:
Route::get('/projects','ProjectsController@index')->name('projects.index');
并使用重定向的路由名称:
return redirect()->route('projects.index');
这应该在您的项目中生成正确的URL。
使用serve
进行开发而不是Apache。
在Laravel项目目录中打开终端并运行以下命令:
php artisan serve
这将启动PHP在http://localhost:8000的内置网络服务器,完全跳过Apache。在开发过程中,这非常好。
您错过了控制器存储区中的传递请求参数()
public function store(Request $request)
{
$project = new Project();
$project->title = $request->title;
$project->description = $request->description;
$project->save();
return redirect('/projects');
}
而且不要忘记在控制器类之上(外部)包含use Illuminate\Http\Request;
。