在codeigniter中将数据从钩子传递到视图

时间:2015-04-18 10:02:26

标签: php codeigniter codeigniter-2

我可以将数据从钩子传递到视图,如果可能请解释。

例如

 $hook['post_controller_constructor'][] = array(
    'class'    => 'Varify_user',
    'function' => 'user_project',
    'filename' => 'varify_project.php',
    'filepath' => 'hooks',
    'params'   => array('')
);

我想发送一些数组数据varify_project.php(钩子文件)来查看。

3 个答案:

答案 0 :(得分:3)

如果您想在加载视图时添加其他数据,可以像这样扩展核心加载器类:

<强>应用/核心/ MY_Loader.php

<?php
class MY_Loader extends CI_Loader {
    public function view($view, $vars = array(), $return = FALSE)
    {
        $vars['hello'] = "Hello World";
        return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));
    }
}

$vars['hello']然后会创建一个可以在任何名为$hello的视图中使用的变量,并且可以重复创建任意数量的变量,前提是您希望它们在您的每个页面上使用应用

答案 1 :(得分:1)

我这样做

<强>应用/核心/ MY_Loader.php

class MY_Loader extends CI_Loader {
    static $add_data = array();
    public function view($view, $vars = array(), $return = FALSE)
    {
       self::$add_data = array_merge($vars, self::$add_data);
       return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array(self::$add_data), '_ci_return' => $return));
    }
}

application / config / hooks.php

$hook['post_controller_constructor'] = function() {
    MY_Loader::$add_data['hello'] = "Hello World";
} ;

答案 2 :(得分:0)

我没有足够的代表来评论splash58的答案,所以我在此添加它以防它对某人有用。

由于_ci_object_to_array()不再可用并发送错误,因此自定义加载程序代码应为(自3.1.3版以来一直在内核中):

#!/usr/bin/env bash
set -Eeo pipefail
# TODO swap to -Eeuo pipefail above (after handling all potentially-unset variables)

# usage: file_env VAR [DEFAULT]
#    ie: file_env 'XYZ_DB_PASSWORD' 'example'
# (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of
#  "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature)
file_env() {
    local var="$1"
    local fileVar="${var}_FILE"
    local def="${2:-}"
    if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then
        echo >&2 "error: both $var and $fileVar are set (but are exclusive)"
        exit 1
    fi
    local val="$def"
    if [ "${!var:-}" ]; then
        val="${!var}"
    elif [ "${!fileVar:-}" ]; then
        val="$(< "${!fileVar}")"
    fi
    export "$var"="$val"
    unset "$fileVar"
}