2013-03-21 69 views
0

在我们的应用程序中,我们使用Controller和View来生成一个可以通过电子邮件发送给用户的PDF文件,Controller呈现一个视图文件并将其传回模型。限制对控制器的外部访问,但允许从模型访问(CakePHP 2.X)

它已被设置为这样,因为在应用程序的另一部分,我们使用相同的视图文件来显示页面上的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; 
} 

其中一期工程,但是如果用户进入和类型/内容/ generatePDF到他们的浏览器可以访问该控制器的功能,所以我希望能够防止它直接从网页访问。

我使用CakePHP 2.X

回答

2

最简单的方法就是前面加上下划线到控制器方法的名字:_generatePDF。这些方法不能通过浏览器访问。