Concrete5 5.7: Использование файловых объектов в одностраничном контроллере

Я пытаюсь прикрепить файловый объект к почтовому объекту.


Я включил следующее в форму моего взгляда:

$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();

Как мне получить правильный файловый объект, который я должен, может быть (??), взять из последней/утвержденной версии этого файла?


person toesslab    schedule 29.04.2015    source источник


Ответы (1)


Это была ошибка, которая была исправлено в основной ветке, вам придется либо исправить это самостоятельно, либо дождаться выхода версии 7.4.

person Korvin Szanto    schedule 29.04.2015
comment
Ой, я сошла с ума!!! спасибо, я исправлю это сам, пока 7.4 не станет окончательной версией - person toesslab; 29.04.2015