在我们的应用程序中,我们使用Controller和View生成PDF文件,可以通过电子邮件发送给用户,Controller渲染视图文件并将其传递回模型。
它的设置是这样的,因为在应用程序的另一部分,我们使用相同的视图文件在页面上显示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输入到他们的浏览器中,他们就可以访问这个控制器功能,所以我希望能够阻止它直接从网上访问。
我正在使用CakePHP 2.X
答案 0 :(得分:2)
最简单的方法是在控制器方法的名称前面添加下划线:_generatePDF
。无法通过浏览器访问此类方法。