【问题标题】:CodeIgniter Hook: Get data from controller's methodCodeIgniter Hook:从控制器的方法中获取数据
【发布时间】:2015-12-01 10:26:42
【问题描述】:

我在config/hooks.php 中定义了一个钩子,如下所示:

$hook['post_controller'][] = 
    array(
        'class'    => 'notify',
        'function' => 'sendEmail',
        'filename' => 'notify.php',
        'filepath' => 'controllers'
    );

现在这个钩子函数将在每个控制器的方法执行后运行。它以我希望的方式运行。所以到目前为止一切都很好。

现在假设我有一个名为dashboard 的控制器和一个名为index 的方法。在 index 方法中,我调用不同的模型方法并获取数据并将其存储在不同的变量中。

现在我想在我的钩子notify-sendEmail 方法中使用这些变量。

我不确定这是否可能。如果有可能并且有人做过这种功能,请帮助我!

基本上我的问题是:我们可以在钩子控制器方法中访问当前控制器方法中的所有对象数据吗?

【问题讨论】:

  • 这个链接可能对stackoverflow.com/questions/29715760/…有帮助
  • 有了params,我们可以传递一个数组来查看吗?但是如何在 hooks.php 中获取dashboard ->index 方法的变量以将其分配给params

标签: php codeigniter class hook


【解决方案1】:

您可以使用数组将数据传递到您的钩子中。例如:在仪表板类的索引方法中,用户数据已经存储在$userdata

// create property for userdata into big object
$this->userdata = $userdata;

然后在你的钩子中通知。您需要检查 userdata 属性是否存在?

function sendEmail(){
    $CI =& get_instance();
    $required = array('email', 'subject', 'body'); // asume these parameter required

    // required userdata property. if property not set then print error
    if (!property_exists($CI, "userdata"))
    {
        echo "userdata required";
        return; // do nothing.
    }

    // if userdata is not array then print error
    if (!is_array($CI->userdata))
    {
        echo "invalid format userdata";
        return; // do nothing
    }

    // still here? it means userdata property exist and it's array
    $config_email = array();
    foreach($required as $key => $value)
    {
       if (!array_key_exist($value, $CI->userdata))
       {
            // some required parameter not exist.
            echo "field ".$value." is required";
            return;
       }

       // passing data into $config_email
       $config_email[$value] = $CI->userdata[$value];
    }

   //`do your stuff here to send email..
   // $config_email already set userdata. you still can modified them

}

【讨论】:

    猜你喜欢
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    相关资源
    最近更新 更多