限制对控制器的外部访问,但启用从模型的访问(CakePHP 2.X)

限制对控制器的外部访问,但启用从模型的访问(CakePHP 2.X),cakephp,Cakephp,在我们的应用程序中,我们使用控制器和视图生成PDF文件,该文件可以通过电子邮件发送给用户,控制器呈现视图文件并将其传递回模型 它是这样设置的,因为在应用程序的另一部分中,我们使用相同的视图文件在页面上显示PDF(需要POST数据) 我的问题是,我需要能够从我的模型中访问控制器功能,但是我想阻止某人(直接使用网站)直接执行控制器功能 在模型中: $Contents = new ContentsController(); $message = $Contents->generatePDF($v

在我们的应用程序中,我们使用控制器和视图生成PDF文件,该文件可以通过电子邮件发送给用户,控制器呈现视图文件并将其传递回模型

它是这样设置的,因为在应用程序的另一部分中,我们使用相同的视图文件在页面上显示PDF(需要POST数据)

我的问题是,我需要能够从我的模型中访问控制器功能,但是我想阻止某人(直接使用网站)直接执行控制器功能

在模型中:

$Contents = new ContentsController();
$message = $Contents->generatePDF($viewVars);
在控制器中:

public function generatePDF($input_data)
{

    //set the original data and the check result to build the page:
    foreach($input_data as $key => $value)
    {
        $this->set($key, $value);
    }

    //instantiate a new View class from the controller
    $view = new View($this);

    $viewData = $view->render('pdf_file', 'pdf');

    return $viewData;
}
但是,如果用户在浏览器中键入/Contents/generatePDF,他们就可以访问此控制器功能,因此我希望能够防止直接从web访问它


我正在使用CakePHP 2.X

最简单的方法是在控制器方法的名称前加下划线:
\u generatePDF
。这些方法无法通过浏览器访问