このアプリケーションでは、コントローラーとビューを使用して、ユーザーに電子メールで送信できる PDF ファイルを生成します。コントローラーはビュー ファイルをレンダリングし、それをモデルに返します。
このように設定されているのは、アプリケーションの別の部分で同じビュー ファイルを使用してページ上に PDF を表示するためです (これには POST データが必要です)。
私の問題は、モデルからコントローラー関数にアクセスできるようにする必要があることですが、誰かが (Web サイトを直接使用して) コントローラー関数を直接実行できないようにしたいです。
モデル内:
$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 を使用しています