首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >laravel-5.7:数据未保存到数据库,对象未找到

laravel-5.7:数据未保存到数据库,对象未找到
EN

Stack Overflow用户
提问于 2019-03-10 17:42:26
回答 2查看 1.2K关注 0票数 0

我试图将数据保存到db中,但它没有保存,并说对象未找到,有人能建议我解决方案吗,我正在遵循本教程:https://laracasts.com/series/laravel-from-scratch-2018/episodes/10

主计长:

代码语言:javascript
复制
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');
}

路线:

代码语言:javascript
复制
Route::get('/projects','ProjectsController@index');
Route::post('/projects','ProjectsController@store');
Route::get('/projects/create','ProjectsController@create');

create.blade.php:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
@foreach($projects as $project)
    <li>{{ $project->title }}</li>
@endforeach
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

使用命名路由

代码语言:javascript
复制
Route::get('/projects','ProjectsController@index')->name('projects.index');

并使用重定向路线的名称:

代码语言:javascript
复制
return redirect()->route('projects.index');

这应该会在您的项目中生成正确的urls。

选项2

使用serve进行开发,而不是使用Apache。

在Laravel项目目录中打开一个终端并运行以下命令:

代码语言:javascript
复制
php artisan serve

这将在http://localhost:8000启动PHP内置的PHP服务器,完全跳过Apache。在开发过程中,这是非常好的。

票数 1
EN

Stack Overflow用户

发布于 2019-03-10 18:25:06

您忽略了在控制器store()中传递请求参数

代码语言:javascript
复制
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;

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55090531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档