2016-06-03 4 views
0

Ich habe das einfache benutzerdefinierte Modul in Magento2 erstellt. Welche Seiten jetzt korrekt angezeigt werden Ich muss den Link auf dieser Seite erstellen, der die PDF-Datei, die sich im Modul-Webordner befindet, herunterlädt.Magento2 muss den Download-Link im benutzerdefinierten Modul erstellen

Für \ code Ex app \ Magento \ Hallo \ Ansicht \ Frontend \ web \ pdf \ test.pdf

Was soll ich tun? ja muß ich das Routing für neue Funktion hinzufügen, wenn, wie ich tun kann, dass meine derzeitigen Routing-Datei

\ app \ code ist \ Magento \ Hallo \ etc \ Frontend \ routes.xml

<?xml version="1.0"?> 
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd"> 
    <router id="standard"> 
     <route id="hello" frontName="hello"> 
      <module name="Magento_Hello"/> 
     </route> 
    </router> 
</config> 

Rest der Dateien sind einfache Moduldateien ohne Änderung.

Bitte lassen Sie mich wissen, wo ich den Download-Code für den Link

Danke schreiben müssen.

+0

Für Antwort bitte Frage auf Magento Stack siehe: http: //magento.stackexchange .com/questions/118226/magento2-create-the-download-link-in-benutzerdefiniertes-modul/118272 # 118272 –

Antwort

1

Dies ist für mich arbeiten

namespace Namespace\ModuleName\Controller\ControllerName; 

use Magento\Framework\App\Filesystem\DirectoryList; 
class Download extends \Magento\Framework\App\Action\Action 
{ 
    protected $directory_list; 
    protected $fileFactory; 
    public function __construct(
    \Magento\Framework\App\Action\Context $context, 
    DirectoryList $directory_list, 
    \Magento\Framework\App\Response\Http\FileFactory $fileFactory) { 
    $this->directory_list = $directory_list; 
    $this->fileFactory = $fileFactory; 
    parent::__construct($context); 
} 

public function execute() 
{ 
    $file = $this->getRequest()->getParam('file'); 

    if(isset($file) && !empty($file)) { 

    $pdf = \Zend_Pdf::load($this->directory_list->getPath(DirectoryList::MEDIA) . DIRECTORY_SEPARATOR . $file); 
    $fileName = test.pdf; 
    $this->fileFactory->create(
    $fileName, 
    str_replace('/Annot /Subtype /Link', '/Annot /Subtype /Link /Border[0 0 0]', $pdf->render()), 
    \Magento\Framework\App\Filesystem\DirectoryList::VAR_DIR, 
    'application/pdf' 
    ); 
    } 
} 
} 
0

Variante 1

Was ist mit Ihrem test.pdf in pub/media Verzeichnis verschieben und die Verknüpfung wie folgt aus:

<a href="/pub/media/test.pdf">here</a> 

Aber das pub/media Verzeichnis sollte dynamisch gesammelt werden, siehe auch: https://mage2.pro/t/topic/153

Variante 2

Wenn Sie Assets im Modul folde halten möchten z. in view/frontend/web/Test.pdf, können Sie das Web-Verzeichnis in Ihrem phtml Vorlage wie diese Adresse:

<?php echo $block->getViewFileUrl('Vendor_Modulename/Test.pdf'); ?>