2016-10-14 9 views
2

私はいくつかの画像を処理するViewHelperを持っています。元のファイルへのイメージパスがあります。この画像のサイズを変更する必要があります。カスタムViewHelperで画像のサイズを変更

これを行うにはTYPO3で使用できるPHPコードはありますか?

が、私はこれを試してみました:

$imgPath = 'img/path/from_database.jpg 
$imgConf = array(); 
$imgConf['file'] = $imgPath; 
$imgConf['altText'] = "Sample alt text."; 
$image = $this->cObj->IMAGE($imgConf); 

が、私はこの例外を取得しています:"Call to a member function IMAGE() on null"

私なViewHelperから継承:\TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelperはすべての

+0

これは、テーブル 'pages'の' media'フィールドであると思いますか?利用可能な ''ビューヘルパーを使うことを考えてみてください...ビューコンポーネントはExtbaseコンテキストかTypoScript 'FLUIDTEMPLATE'によって呼び出されますか? –

+0

@OliverHader申し訳ありませんが、コードは他のウェブサイトから貼り付けられました。私はこれを編集してコードをより緊密に一致させましたが、この問題には影響しません。このViewHelperは、同じ拡張モジュール(ViewHelperの拡張モジュール)に配置されたFluidテンプレート内で呼び出されるため、Extbaseコンテキストと見なします。 を使用したいのですが、PHPコードでどのように使用するのか分かりません。 – Alan

答えて

4

まず、あなたが使用しているものTYPO3バージョンと言うべきで、拡張機能がExtbaseまたは古いpibasedコードを使用している場合

名前空間のビューヘルパーを継承しているので、Extbaseだと思います。私の助言は、元のf:imageビューヘルパーコード(TYPO3\CMS\Fluid\ViewHelpers\ImageViewHelper)を見て、必要なものをコピーすることです。

最初のあなたの上部にこれを追加しますがなViewHelper:

/** 
* @var \TYPO3\CMS\Extbase\Service\ImageService 
* @inject 
*/ 
protected $imageService; 

次に、あなたのメソッドのコード

 $image = $this->imageService->getImage($imgPath); 

     // you have to set these variables or remove if you don't need them 
     $processingInstructions = array(
      'width' => $width, 
      'height' => $height, 
      'minWidth' => $minWidth, 
      'minHeight' => $minHeight, 
      'maxWidth' => $maxWidth, 
      'maxHeight' => $maxHeight, 
      'crop' => $crop, 
     ); 
     $processedImage = $this->imageService->applyProcessingInstructions($image, $processingInstructions); 
     $imageUri = $this->imageService->getImageUri($processedImage); 

$imageUriは今、リサイズした画像へのパスを保持します。

PS:コピーした例は、7.xブランチ以降に存在しなくなった古いpibasedシステムからのものです。

+0

ありがとう、それは素晴らしい作品です。唯一の問題は、依存関係の注入が私のケースではうまくいかなかったことです。キャッシュ(キャッシュフォルダとバックエンドのキャッシュアイコン)をクリアし、CR LFをLFに置き換えました。このため、私はこのオブジェクトを '\ TYPO3 \ CMS \ Core \ Utility \ GeneralUtility :: makeInstance(" TYPO3 \\ CMS \\ Extbase \\ Service \\ ImageService ")にしなければなりませんでした。 – Alan

関連する問題