Laravel 5:无法从视图中检索用户输入

时间:2015-10-16 19:46:51

标签: php laravel routes laravel-5

我的帖子页面上有一个文本区域输入字段,我正在尝试通过ajax提交用户评论。但我一直得到SQL错误注释字段不能为空。我很肯定我正在填补数据。

  

SQLSTATE [23000]:完整性约束违规:1048列“注释”不能为空(SQL:插入commentsuser_idcommentparent_id,{ {1}},parentsupdated_at)值(1,,0,2015-10-16 19:16:26,2015-10-16 19:16:26))

执行created_atdd(Input::get('commenter_comment))

我也在控制台中收到此错误

  

POST http://localhost/reddit/public/posts/post_this_comment 500(内部服务器错误)

这些是我的路线

null
Route::resource('posts', 'PostsController'); Route::post('posts/post_this_comment', 'PostsController@post_this_comment');

中的

post_this_comment()方法

PostsController

视图

public function post_this_comment(Request $request){

    $comment = new Comment;
    $comment->user_id = Auth::id();
    $comment->comment = Input::get('commenter_comment');
    $comment->parent_id = Input::get('commenter_parent');
    if($comment->parent_id > 0){
        $my_parent = Comment::find($comment->parent_id);
        $comment->parents = $my_parent->parents.'.'.$comment->parent_id;
    }else{
        $comment->parents = '0';
    }
    $comment->save();
    $per_page = Input::get('per_page');
    $comment_list = view('eastgate.comment.comment_list')
        ->with('comments', $this->comment_list($per_page, $request))
        ->with('total_comments', $this->total_comments())
        ->with('per_page', $per_page)
        ->render();
    $response = array(
        'status' => 'success',
        'msg' => 'Comment Saved!',
        'comment_list' => $comment_list
    );
    return Response::json($response);
}

2 个答案:

答案 0 :(得分:1)

尝试

$comment->comment = $request->input('commenter_comment');
$comment->parent_id = $request->input('commenter_parent');

最后,问题在于ajax请求。

$(document).on('click', 'a.post-this-comment', function(){ 
var formData = 'commenter_comment='+$('textarea[name=commenter_comment]').val(); 
//formData.append('commenter_comment', $('textarea[name=commenter_comment]').val()); 
console.log(formData); 


var request = $.ajax({ // push question data to server 
type : 'POST', // define the type of HTTP verb we want to use (POST for our form) 
url : 'post_this_comment', // the url where we want to POST 
data : formData // our data object 
}); 
request.done(comment_done_handler); 
request.fail(comment_fail_handler); // fail promise callback 
});

更改为此格式。

答案 1 :(得分:1)

如果您使用的是Laravel 5.x,请不要使用Input::get()作为版本5及更高版本建议使用$request->input('something')

您必须使用以下内容:

use Illuminate\Http\Request;

然后你可以使用:

if($request->has('commenter_comment'))
{
    $comment->comment = $request->input('commenter_comment');
}

上面的if条件检查输入是否实际发送并具有值。在尝试使用它之前,这很有用。