HTML をレンダリングするカスタム Twig 関数を作成しました。私の最初のアイデアは、レンダリング ロジック用の新しいコントローラーを作成し、それを Twig 拡張機能で使用することでした。{{ button() }}
ただし、テンプレートを呼び出すときにこのエラーがスローされるため、機能しません。
FATALERROREXCEPTION: エラー: /FOO/VENDOR/SYMFONY/SYMFONY/SRC/SYMFONY/BUNDLE/FRAMEWORKBUNDLE/CONTROLLER/CONTROLLER.PHP LINE 106 の非オブジェクトに対するメンバー関数 GET() の呼び出し
Twig 拡張機能は基本的に機能します (ここには示されていないいくつかの単純なヘルパーを既に実装しています)。
コントローラー (不要なコードを削除):
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class ButtonController extends Controller {
public function showAction()
{
[...]
return $this->render(
'AcmeDemoBundle:Default:button.html.twig', array($vars)
);
}
}
Twig エクステンション:
class AcmeExtension extends \Twig_Extension {
public function getFunctions()
{
return array(
new \Twig_SimpleFunction('button', array($this, 'button'), array('is_safe' => array('html'))),
);
}
public function button()
{
$controller = new ButtonController();
return $controller->showAction();
}
}