我有一个带有per_page
输入字段的评论列表,允许用户通过ajax在页面上显示更多的评论。默认情况下,它设置为50
但是当我试图改变它时,比如说25,我在开发人员的控制台上得到了这个错误
POSThttp://localhost/r2/public/posts/per_page500(内部服务器错误)
在Network
选项卡中,我可以看到这个错误
LengthAwarePaginator中出现错误异常。php第48行:
除零
在兰斯瓦雷帕吉纳托。php第48行
在处理例外-
在LengthAwarePaginator-
在评论控件-
在评论控件-
在评论控件-
在评论控件-
在我改变它的路线将其与posts页面集成之前,它工作得很好。
我的路线
Route::get('{post}/comment', ['as' => 'comment', 'uses' => 'CommentController@index']);
Route::post('{post}/post_this_comment', 'CommentController@post_this_comment');
Route::get('{post}/recaptcha', 'CommentController@recaptcha');
Route::get('{post}/reply_comment', 'CommentController@reply_comment');
// this is the per_page route
Route::post('{post}/per_page', ['as' => 'per_page', 'uses' => 'CommentController@per_page']);
Route::post('{post}/comment/update', ['as' => 'comment/update', 'uses' => 'CommentController@update']);
这是CommentController
private function paginate($items, $perPage, Request $request) {
$page = Input::get('page', 1); // get current page or default to 1
$offset = ($page * $perPage) - $perPage;
return new LengthAwarePaginator(
array_slice($items, $offset, $perPage, false),
count($items),
$perPage,
$page,
['path' => $request->url(), 'query' => $request->query()]);
}
protected function comment_list($per_page, Request $request, Post $post) {
$root_comments = Comment::root_comments($post->id);
$root_with_replies = $this->include_replies_for($root_comments);
$paginated_comments = $this->paginate($root_with_replies, $per_page, $request, $post);
return $paginated_comments;
}
protected function show_comment_list(Request $request, Post $post) {
$per_page = Input::get('per_page');
session(['per_page' => $per_page]);
$comment_list = view('eastgate.comment.comment_list')
->with('comments', $this->comment_list($per_page, $request, $post))
->with('total_comments', $this->total_comments())
->with('per_page', $per_page)
->render();
return $comment_list;
}
public function per_page(Request $request, Post $post){
$response = array(
'status' => 'success',
'msg' => 'reply comment',
'comment_list' => $this->show_comment_list($request, $post)
);
return Response::json($response);
}
这是JS和HTML
$(document).on('change', 'input.comments_per_page', function(){
var formData = new FormData();
formData.append('per_page', $('.comments_per_page').val());
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 : 'per_page', // the url where we want to POST
data : formData,
dataType : 'json',
processData : false,
contentType : false
});
request.done(per_page_done_handler);
request.fail(per_page_fail_handler); // fail promise callback
});
<div class="col-xs-12">
Show <input type="text" name="comments_per_page" class="comments_per_page" value="{!! $per_page !!}" size="2" title="Number of comments per page"> comments per page
</div>
更新
我应该提到,我也可以看到laravel的默认分页div,当我点击第二个页面,其中有http://localhost/r2/public/posts/2/?page=2
的url页面重定向到http://localhost/posts/2?page=2
和我得到这个错误
错误404找不到对象!
但是如果我手动转到这个URLhttp://localhost/r2/public/posts/2?page=2
第二页的评论加载得很好。
更新2
我只是在comment\u list()
方法中的$paginated\u comments
上设置路径,现在下一页可以正常打开了。但是当我试图更改显示的注释数时,仍然会得到被零除的错误。
$paginated_comments = $this->paginate($root_with_replies, $per_page, $request, $post);
$paginated_comments->setPath('');
我认为你的问题在于你没有告诉你的路线,每页是一个参数,让我解释一下:
Route::post('{post}/per_page', ['as' => 'per_page', 'uses' => 'CommentController@per_page']);
应该是:{per_page}
Route::post('{post}/{per_page}', ['as' => 'per_page', 'uses' => 'CommentController@per_page']);
我希望这能帮助你。
这与页码(50或25)无关。如果您查看\vendor\laravel\framework\src\illumb\Pagination\LengthAwarePaginator。php
,您可以看到您的问题行(它抛出异常除以零
):
$this->lastPage = (int) ceil($total / $perPage); // <= problem
这意味着只有一件事-$perPage
为0或null=
注意:恕我直言,分页应该是一个单一的动作。你都需要信息来制作它,但是,你把它分成四个“部分”。
我的代码中出现了这个错误。 这是我的代码: 这就是结果。错误:在线程“main”java中输入model:Exception。lang.NullPointerException在汽车上。主(车.java:10)
问题内容: 也许我在PHP手册中某个地方缺少它,但是错误和异常之间的区别到底是什么?我可以看到的唯一区别是错误和异常的处理方式不同。但是什么导致异常,什么导致错误? 问题答案: 引发异常 -旨在捕获异常。错误通常是无法恢复的。例如,让我们说- 您有一段代码将在数据库中插入一行。此调用有可能失败(重复ID)-您将希望遇到一个“错误”,在这种情况下为“异常”。当您插入这些行时,您可以执行以下操作 程序
我在Eclipse中尝试Apache HTTP客户端库 下面的代码片段检查了异常并需要处理。 日蚀给出了3条建议 > Add throws Exception-(工作正常) 用尝试捕捉包围- (也工作正常) 用try/multicatch环绕 第三个选项给出错误 客户端协议异常已经被替代的IO异常捕获 我看到了的源代码,它。据我所知,在捕获多个异常时,我们可以在更具体的异常下捕获更一般的异常。因此
我对Java非常陌生,似乎遇到了一些奇怪的错误。我到处寻找解决方案,我遇到的所有解决方案都与我已有的完全相同。 我已经编写了一个类,将目的地添加到ArrayList,但它不起作用。 我得到了这个错误:“线程中的异常”main“java.lang.NullPointerException” 这是我的代码: 我试图添加到ArrayList的数据的代码是这样的: 它退出方法中的程序,并且不将目标添加到数
我是第一个 org.springframework.jdbc.BadSqlGrammarException:准备状态回调;错误的SQL语法[选择cid,临床医生代码,密码,名字,临床医生的姓氏,其中临床医生代码= ?]; 嵌套异常com.mysql.jdbc.exceptions.jdbc4. MySQLSyntaErrorException:字段列表中的未知列“临床医生” 以下代码出错,您还可以
我是Java公司的JSON新手,并试图使用maven和Eclipse来探索它。 这是我的JSON文件。 我的pom.xml文件如下所示 我试图列出所有的jsonp事件。下面是相同的代码段。 运行上述文件后,我得到以下错误。 谁能帮我找出哪里不对劲。