【问题标题】:How to modify data in array before sending to view?如何在发送到视图之前修改数组中的数据?
【发布时间】:2011-07-05 16:31:56
【问题描述】:

我目前将一些数据作为数组从我的 CodeIgniter 控制器发送到视图:

//Send data to template
$this->load->view('generator/content', $data);

$data 在哪里:

$data = array_merge($page, $posts);

我希望在将$posts 中的一些数据发送到视图之前,通过调用我的库中的函数/方法来修改:

if (!empty($posts)) {   
    $posts = $this->my_library->modifyPosts($posts, $page_ID);
}

函数/方法中的内容包括str_replace、爆炸字符串、时间格式化以及通常将数组中的数据转换为可用格式。据我了解,最好使用库来做这些事情。

有没有一种方法可以重建数组并将其从库中返回到控制器,这样当我将数据传递给视图时,它就可以呈现了?

【问题讨论】:

    标签: php arrays codeigniter controller


    【解决方案1】:

    无论如何,您应该从控制器调用库函数。所以在控制器中你可能有

    $posts = $this->my_library->modify_something($posts);

    然后你的图书馆可以做这件事并以新的“可用格式”返回$posts

    然后从那里开始就好了,将数据添加到 $data 数组并将其传递给您的视图。

    【讨论】:

    • $posts 的原始形式来自 Facebook PHP SDK。额外的函数来自我用自己的函数设置的另一个库。两个库都已从控制器调用。
    • @Joe - 好吧,您仍然可以从 facebook 库中提取 $posts,然后将其传递给您的库,对吗?
    • 是的,我可以将 $posts 传递给其他库 好的,我只是想不出一种好的方式将它返回给控制器。简单地执行我的清理功能并返回结果并没有达到预期的效果。哼哼。
    • @Joe - 为了清楚起见。从您的控制器中,调用 facebook 库,如下所示:$posts = $this->facebook_lib->function_name();。然后像这样(仍然从控制器)调用您的自定义库:$posts = $this->custom_lib->function_name($posts);。当你这样做时,什么不起作用?您可以随时访问 $posts 变量,并且您的控制器可以在完成后将其发送到视图。
    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 2022-11-02
    • 2016-10-31
    • 1970-01-01
    相关资源
    最近更新 更多