CakePHP:在调用函数时使用被调用函数的返回值

时间:2017-09-20 15:40:38

标签: php cakephp

在我的控制器中,我有一个函数(getRelatedStuff),它返回一个值数组,供我在edit.ctp中使用:

class MyController extends AppController {
    public function edit($id = null) {
        $this->getRelatedStuff($current['Form']['id'];
    }
    public function getRelatedStuff($id = null) {
        $this->loadModel('Related');
        $related = $this->Related->find('all', array(
            'conditions'=>array('Related.id' => $id)
        );
         return $this->set(compact('related'));
    }
}

当我在foreach循环中的edit.ctp中使用它时,这很好用。

foreach($related as $r) { 
    echo $r['Model']['field'];
}

但是,我无法在编辑功能本身中使用$ related,我需要访问该数据以用于其他目的。具体来说,我需要在函数编辑中使用$ related设置foreach()循环。如果我尝试这样做,或者如果我在编辑功能中尝试调试$ related,我总是得到:

undefined variable $related in /docpath

如果能够在我的编辑功能中使用$ related,我该怎么做?

2 个答案:

答案 0 :(得分:1)

由于此行

,您可以在模板中使用它
df1 = (df[df['Correct'] == 'T'].groupby('userID')
                              .size()
                              .reindex(df['userID'].unique(), fill_value=0)
                              .to_frame('Correct'))
print (df1)
        Correct
userID         
1050          2
1051          2
333           0

(它正在为要使用的模板创建$this->set(compact('related')); var)

但您在控制器中的编辑操作无法访问$ related变量,因此您应该返回它:

$related

答案 1 :(得分:0)

我明白了。我将编辑功能中的函数调用更改为以下内容:

$related = $this->getRelatedStuff(['Form']['id']);

然后我在edit函数中设置edit.ctp的变量:

$this->set('related', $related);

最后,我修改了getRelatedStuff,使它只返回原始变量,而不先设置它:

return $related;