2016-05-14 12 views
1

添付ファイル付きのメールを送信したいので、pdfファイルへの絶対パスが必要です。Symfony2コントローラでファイルの絶対パスを取得する方法は?

私は、コントローラに流れるコードを試みた:

$this->get('templating.helper.assets')->getUrl('MyDoc.pdf', 'doc'); 

をしかし、これは返します

/bundles/MyBundle/doc/MyDoc.pdf?v=1 

これは、Webアクセスのためのドメインなしのパスです。しかし、以下の例のように、ディスクのルートを始める実際のパスが必要です。これはどのように可能ですか?ありがとう。

/home/MyAccount/public_html/web/src/company/MyBundle/Resources/public/doc/MyDoc.pdf 

答えて

3

$this->get('templating.helper.assets')資産ヘルパーについてHTTP URI、いないディレクトリパスです。 しかし、あなたは簡単にこのような権利絶対ディレクトリのWebパスを取得することができます異なるURLを探している誰のためのチートシートの

/home/martins/www/symfony-project/web 
1

ビット:このような何かを返す必要があります

$appPath = $this->container->getParameter('kernel.root_dir'); 
$webPath = realpath($appPath . '/../web'); 

$webPathを/異なるアプリケーション用のURIパス。

Symfony\Component\HttpFoundation\Requestコンポーネントを使用すると、これを呼び出すことができるさまざまな方法があります。

は、このリンクhttp://dev.col.com/app_dev.php/my-route?bar=1&foo=bar

$r = $this->getRequest(); 
$r->getClientIp()     127.0.0.1 
$r->getScriptName()     /app_dev.php 
$r->getPathInfo()     /my-route 
$r->getBasePath()     '' 
$r->getBaseUrl()     /app_dev.php 
$r->getScheme()      http 
$r->getPort()      80 
$r->getHttpHost()     dev.col.com 
$r->getRequestUri()     /app_dev.php/my-route?bar=1&foo=bar 
$r->getBaseServerUrl()    http://dev.col.com 
$r->getUri()      http://dev.col.com/app_dev.php/my-route?bar=1&foo=bar 
$r->getUriForPath("/other-path") http://dev.col.com/app_dev.php/other-path 
$r->getQueryString()    bar=1&foo=bar 
$r->isSecure()      false 
$r->getHost()      dev.col.com 
$r->getMethod()      GET 
$r->isXmlHttpRequest()    false 

それともあなたが同様に小枝でそれを行うことができます考えてみましょう。たとえば、次のように

<div> 
    <a href="{{ job.url }}"> 
     <img src="{{ app.request.scheme ~ '://' ~ app.request.host }}{{ asset(job.webPath) }}" alt="{{ job.company }} logo" /> 
    </a> 
</div> 

<div> 
    <a href="{{ job.url }}"> 
     <img src="{{ app.baseServerUrl }}{{ asset(job.webPath) }}"alt="{{ job.company }} logo" /> 
    </a> 
</div> 
関連する問題