Я пытаюсь прикрепить файловый объект к почтовому объекту.
Я включил следующее в форму моего взгляда:
$f = new Concrete\Core\Application\Service\FileManager();
//...
echo $f->file('file', 'test', 'pls choose');
Затем я отправляю свою форму обратно в контроллер. Там (кстати, все остальные поля формы поступают в контроллер, как и ожидалось), я делаю:
$files = $this->post('test');
$file = \File::getByID($files);
который должен возвращать объект File. Когда я делаю
$file = \File::getRelativePathFromID($files);
он дает мне правильный путь к выбранному файлу.
Все идет нормально. НО, когда я пытаюсь отправить письмо именно с прикрепленным файловым объектом:
$mail = Loader::helper('mail');
$mail->setTesting(false);
$mail->setSubject('test-subject');
$mail->to($this->post('uEmail'));
//...
$attach = $mail->addAttachment($file);
$attach->filename = 'tttt';
$mail->sendMail();
возникает следующая ошибка:
call_user_func_array() ожидает, что параметр 1 будет допустимым обратным вызовом, класс «Concrete\Core\File\Version» не имеет метода «getPath»
который, по-видимому, исходит из этого метода класса (API а>):
namespace Concrete\Core\Mail;
//...
class Service {
//...
/**
* Add attachment to send with an email.
*
* Sample Code:
* $attachment = $mailHelper->addAttachment($fileObject);
* $attachment->filename = "CustomFilename";
* $mailHelper->send();
*
* @param File $fob File to attach
* @return StdClass Pointer to the attachment
*/
public function addAttachment(\Concrete\Core\File\File $fob)
{
// @TODO make this work with the File Storage Locations
$fv = $fob->getVersion();
$path = $fob->getPath();
$name = $fv->getFileName();
//...
}
//...
}
который, по-видимому, хочет файловый объект в качестве параметра, который, я думаю, я передал, не так ли? Почему мой файловый объект становится объектом FileVersion, у которого, как я вижу, нет метода getPath().
Мои другие испытания на данный момент:
$fv = $f->getApprovedVersion();
$fv->setFile($f);
$fv->getFile();
$fv = $f->getRecentVersion();
$fv->setFile($f);
$fv->getFile();
Как мне получить правильный файловый объект, который я должен, может быть (??), взять из последней/утвержденной версии этого файла?