我设法找到一些资源来用ajax分页正常页面。很简单你可以简单地拥有这个:
if($request->ajax()) {
return [
'posts' => view('ajax.index')->with(compact('posts'))->render(),
'next_page' => $posts->nextPageUrl()
];
}
但是对于Composer View,这是行不通的,因为我在View Composer中没有$request
。谁能启发我。也许有某种方法可以在composer中获取变量,因为它的分页链接基本上是当前页面以及下一个contnet的扩展。
答案 0 :(得分:1)
可以!只需提示Request
类,服务容器就会在运行时注入它。然后,您可以访问请求对象的所有属性
private String name;
private String nickname;
// Rest of the fields with default (null) values
public Person(String name, String nickname) {
this.name = name;
this.nickname = nickname;
}
private Person(){}
// Getters, but no setters
更新:
如果您没有将其从控制器传递到视图,但是$ category对象仍在作曲家中使用,则会出现错误。
为避免这种情况,您可以删除use Illuminate\Http\Request;
class MyComposer
{
public function __construct(Request $request)
{
$this->request= $request;
}
function compose($view)
{
if($this->request->ajax()) {
return [
'posts' => view('ajax.index')->with(compact('posts'))->render(),
'next_page' => $posts->nextPageUrl()
];
}
}
}
并显式传递使用类别的视图的视图名称,并创建另一个声明传递不使用这些视图的名称,因此您将需要两个视图编写器
*
或者您可以仅检查if语句中是否设置了$ category变量
答案 1 :(得分:0)
因此,这是此问题的答案。如果是View Composer分页。您不能在作曲家中进行分页,从技术上讲您具有做到这一点的能力,但是即使您通过了向提供者提出请求的请求(这显然是个坏主意),分页仍然无法很好地工作。
您将立即面临的基本问题之一是将页面分页到posts/postslug
之类的其他页面中,这将很容易引发错误。因此,您应该做的是在控制器中创建一个非常基本的功能,并对该页面进行请求。
这里是一个例子。 可以说您使用以下查询为数据提供了
:$posts = Post::orderBy('created_at', 'desc')
->paginate(15, ["*"], 'sidebar')->withPath('postPaginator');
要对此进行分页的功能必须是这样的:
public function postPaginator(){
$posts = Post::orderBy('created_at', 'desc')->paginate(15 , ["*"], 'sidebar');
}
如果您希望此pagiantor对ajax请求和基本get请求都具有灵活性,那么可以返回如下结果:
if($this->request->ajax()) {
return [
'posts' => view('ajax.sidebarindex', ['posts' => $posts])->render(),
'next_page' => $posts->nextPageUrl(),
];
}
$posts->nextPageUrl()
可以提供下一页链接,因此您可以将其分配给下一个分页的按钮。