我试图将数据保存到db中,但它没有保存,并说对象未找到,有人能建议我解决方案吗,我正在遵循本教程: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发布于 2019-03-10 19:41:36
您发布的Laravel代码在一个适当配置的网站下是正确的。您的评论中的错误:
对象找不到!在此服务器上找不到请求的URL。参考页面上的链接似乎是错误的或过时的。请将错误通知该页的作者。如果您认为这是服务器错误,请与网站管理员联系。错误404本地主机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配置的问题,并将重点放在其他避免错误的方法上。
备选案文1
使用命名路由
Route::get('/projects','ProjectsController@index')->name('projects.index');并使用重定向路线的名称:
return redirect()->route('projects.index');这应该会在您的项目中生成正确的urls。
选项2
使用serve进行开发,而不是使用Apache。
在Laravel项目目录中打开一个终端并运行以下命令:
php artisan serve这将在http://localhost:8000启动PHP内置的PHP服务器,完全跳过Apache。在开发过程中,这是非常好的。
发布于 2019-03-10 18:25:06
您忽略了在控制器store()中传递请求参数
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;。
https://stackoverflow.com/questions/55090531
复制相似问题