0

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();
    }
}
4

1 に答える 1