У меня есть код, над которым я работаю, для типа страницы загрузки PDF в SilverStripe, что позволяет людям загружать PDF-файл на сервер. В свою очередь, этот PDF-файл затем считывается в верхнюю навигацию в виде ссылки, которая при нажатии автоматически загружает файл PDF.Настроить ссылку в навигации SilverStripe для автоматической загрузки PDF-файла
У меня есть большая часть кода создана:
<?php
class PDFTemplate extends Page {
public static $db = array(
);
public static $has_one = array(
'PDFFile' => 'File'
);
public static $has_many = array(
);
public function Link() {
return '/home/download?ID=' . $this->ID;
}
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab("Root.Main", new UploadField('PDFFile', "PDF File"), "Content");
return $fields;
}
}
class PDFTemplate_Controller extends Page_Controller {
public static $allowed_actions = array (
'download'
);
public function init() {
parent::init();
}
public function download() {
$id = $_GET['ID'];
$obj = DataObject::get_by_id('PDFTemplate', $id);
header('Content-Type: application/pdf');
header('Content-Disposition: attachment;');
header('Pragma: no-cache');
return readfile("");
}
}
Но одна вещь, которую я застрял в данный момент, как получить URL-адрес файла PDF в команду ReadFile(). $ obj прямо сейчас устанавливается для получения идентификатора конкретного файла PDF для страницы .... так что мне нужно использовать что-то вроде $ obj.URL или $ obj.Link в readfile()?
Извините за ожидание, но я попробовать это, и это, кажется, работает. Благодаря! –