在我们的应用程序中,我们使用控制器和视图来生成可以通过电子邮件发送给用户的 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 他们可以访问这个控制器功能,所以我希望能够防止它被直接从网络访问。
我正在使用 CakePHP 2.X