Laravel 5:表单数据不会提交到数据库 - 没有显示错误

Posted

技术标签:

【中文标题】Laravel 5:表单数据不会提交到数据库 - 没有显示错误【英文标题】:Laravel 5: form data won't submit to the database - no error shown 【发布时间】:2016-01-03 09:42:52 【问题描述】:

我正在尝试在名为 moderators 的数据透视表中将用户分配为论坛类别(subreddits)的版主

这是表格

版主:id、user_id、subreddit_id、created_at、updated_at

用户:ID:姓名:电子邮件...

subreddits:id、user_id、name...

我已经创建了视图、控制器和模型,但是数据不会提交到数据库并且我没有收到任何错误。

注意:我需要访问这条路线subreddit/id/moderators/create 才能到达视图并开始提交。

编辑:我刚刚清空了 store() 函数并将其替换为 return 'done'; 但这似乎没有生效。单击提交按钮后,页面只是重新加载,没有任何反应。那么问题可能出在视图中?

Routes.php

Route::resource('subreddit', 'SubredditController');
Route::resource('subreddit.moderators', 'ModeratorsController');

路由服务提供者

$router->model('articles', 'App\Article');
$router->model('subreddit', 'App\Subreddit');
$router->model('posts', 'App\Post');
$router->model('moderators', 'App\Moderator');

Moderator模特

protected $table = 'moderators';

    protected $fillable = ['user_id', 'subreddit_id'];

    public function subreddit() 
        return $this->belongsTo('App\Subreddit');
    

    public function user() 
        return $this->belongsTo('App\User');

ModeratorsController - 我在这里尝试手动提交 user_id 和 subreddit_it 只是为了测试它是否正常工作。

public function create(Moderator $moderator, Subreddit $subreddit, User $user)
    
        $subreddit = Subreddit::with('user')->findOrFail($subreddit->id);

        return view('user/moderators')->with(compact('subreddit'));
    

public function store(Requests\ModeratorRequest $request, Subreddit $subreddit)
    
        $moderator = new Moderator;
        $moderator->user_id = 2;
        $moderator->subreddit_id = 17;
        $moderator->save();
    

这是视图内的表单,我使用的是 Typeahead.js,这就是为什么有 id="remote" 的 div

!! Form::open(['url' => 'subreddit/' . $subreddit->id . '/moderators', 'method' => 'POST']) !!

    <p>
        <div id="remote">
            <input class="form-control typeahead" type="text" placeholder="Choose a Username" name="user_name">
            <input type="hidden" class="user_id" value="" name="user_id">
        </div>
    </p>

    <p>
        !! Form::submit('Submit Post', ['id' => 'submit', 'class' => 'btn btn-primary']) !!
    </p>

!! Form::close() !!

版主请求

public function authorize()

   return true;


public function rules()

   return [
        'user_id' => 'required',
        'subreddit_id' => 'required'
   ];

【问题讨论】:

你好。 ;) 请张贴ModeratorRequest。我认为您的视图没有显示返回的验证错误,因此请求将返回而没有错误。 你好 :) 我已经更新了我原来的帖子并添加了 ModeratorRequest。 ModeratorRequest $request改成Request $request看看能不能用。 从您的验证规则中删除 subreddit_id 并使用 ModeratorRequest 再次检查。它应该工作;) 尝试foreach ($messages-&gt;all() as $message) 看看您的视图中是否仍有验证错误。 【参考方案1】:

根据documentations尝试foreach ($messages-&gt;all() as $message)

问题是您的 ModeratorRequest 正在返回验证错误,您不会在视图上显示该错误。

【讨论】:

以上是关于Laravel 5:表单数据不会提交到数据库 - 没有显示错误的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 表单使用 Ajax 和 Laravel 路由提交到数据库

表单提交后,在 laravel 中向用户显示提交的数据

Laravel 表单提交到另一个页面

注册表未将数据提交到数据库 Laravel 5.2

在 laravel 中通过 ajax 提交简单的表单,之后,将新行插入到现有表中,其中包含来自提交表单的数据

使用laravel提交表单以处理时出现MethodNotAllowedHttpException?