我在$hook['post_controller'][] =
array(
'class' => 'notify',
'function' => 'sendEmail',
'filename' => 'notify.php',
'filepath' => 'controllers'
);
中定义了一个钩子,如下所示:
dashboard
现在这个钩子函数将在每个控制器的方法执行后运行。它正在以我希望它运行的方式运行。所以一切都很好。
现在假设我有一个名为index
的控制器,其中有一个名为notify-sendEmail
的方法。在索引方法中,我调用不同的模型方法并获取数据并将其存储为不同的变量。
现在我想在我的钩子element.getScene().getWindow()
方法中使用这些变量。
我不确定这是否可能。如果有可能并且任何人都已经完成了这种功能,请帮助我!
基本上我的问题是:我们可以在钩子控制器方法中从当前控制器方法访问所有对象数据。
答案 0 :(得分:0)
您可以使用数组将数据传递到钩子中。例如:在仪表板类的索引方法中,userdata已存储在$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
}