0

我正在制作一个搜索表单,从模型中提取多维数组中的用户数据,我似乎无法弄清楚如何在 MVC 样式设置中对其进行分页。模型将未知长度的数组发送到视图,因为有几个搜索字段都是可选的。它是$_POST数据,所以当我刷新页面时我会丢失数据。

这是数组的简化版本...

Array
(
[0] => Array
    (
        [id] => 1

        [username] => Rebequa

        [city] => arlington

        [state] => va

    )

[1] => Array
    (
        [id] => 2

        [username] => steve

        [city] => 

        [state] => 

    )

[2] => Array
    (
        [id] => 6

        [username] => Rebequa2

        [city] => arlington

        [state] => va

    )
)
4

2 回答 2

1

很难真正理解您,但 array_chunk 可能会将数组拆分为“块”或“页面”:http://php.net/manual/en/function.array-chunk.php

例如,要为您的数组获取一个页面大小为 1 的数组:

array_chunk($my_model_array, 1);

这将输出类似于:

Array
(
[0] => Array(
    [0] => Array
    (
        [id] => 1

        [username] => Rebequa

        [city] => arlington

        [state] => va

    )
), 
[1] => Array(
    [0] => Array
    (
        [id] => 2

        [username] => steve

        [city] => 

        [state] => 

    )
)

所以根数组中的每个元素现在都等于一个页面,然后您可以滚动这些“页面”。然后,您可以将每个根元素放入一个 div 中,并使用 JS 在页面之间切换。

编辑

当然,这里最好的方法是使用 AJAX 来获取您的结果并从搜索表单中执行 AJAX 用户列表或使用$_GET,因为此数据不设置数据库模型等,它仅用于从模型中获取用户,如搜索询问。

于 2012-09-26T11:44:10.787 回答
1

首先,您不应该直接从$_POST. 相反,您应该将条件存储在$_SESSION或缓存搜索结果,并将用户重定向到"results".

如果您F5在 Firefox 或 Internet Explorer 中使用表单和键,您就会明白它会导致什么样的问题。

我建议在执行重定向之前存储条件$_SESSION并检索结果总数(也存储在 中)。$_SESSION

然后对于每个页面,您只需修改条件,并生成结果列表。


顺便说一句,如果你真的想实现 MVC 设计模式,你应该知道模型层不能有Page的概念。这将是表示逻辑的一部分。视图在从模型层检索信息时,应该请求give me 1..10 entrygive me 31..40 entry等等。

然后,View 将从模型层获取此信息,并根据需要使用尽可能多的模板来呈现响应。

您必须了解的另一件事是$_SESSION缓存和缓存形式都是存储介质。你不应该只从模型层直接访问。

我建议避免缓存搜索结果,因为它仅在您拥有少量数据且需要很长时间才能检索的情况下才有用。缓存包含数千个元素的数组会适得其反。

于 2012-09-26T11:44:59.027 回答