アクションメソッドからWebブラウザにテンプレートの処理結果ではなく、ファイルを送出するには以下のようにします。
require_once "/path/to/Guesswork.php";
class CsvDownloadController extends Controller
{
var $_gw_default_action = "download";
var $_gw_template_class = "/path/to/Smarty.class.php";
var $_gw_template_templates_dir = "/path/to/templates";
var $_gw_template_compile_dir = "/path/to/templates_c";
// CSVファイルをブラウザに送出
function executeDownload()
{
$filename = "test.csv";
header("Content-Disposition: attachment; filename=" . $filename);
header("Content-Type: text/comma-separated-values; name=" . $filename . "; charset=EUC-JP");
print "foo,bar,baz,1000";
return false;
}
}
$controller = new CsvDownloadController();
$controller->process();
exit;
ファイルの送出を行いテンプレートの表示は行わない場合は、アクションメソッドでfalseを返すようにします。また、header()関数に渡している各種ヘッダはCSVファイルの場合の値です。この部分は送出するファイルの内容に応じて必要なヘッダを出力するようにしてください。