0

zfc-admin で一部のコントローラーのレイアウトをオフにしようとしています。残念ながら、私が見つけたすべての方法は正反対です。ビューをオフにして、レイアウトをロードします。

例えば。

$viewModel = new ViewModel();
        $viewModel->setTerminal(true);
        return $viewModel;

setTerminal() メソッドの通常の機能を妨げる ZfcAdmin の設定に何かありますか?

4

3 に答える 3

1

別の一時的なZfcAdmin\Module.php解決策として、編集してこのバグを修正できます。次のように変更します。

public function selectLayoutBasedOnRoute(MvcEvent $e)
{
    $app    = $e->getParam('application');
    $sm     = $app->getServiceManager();
    $config = $sm->get('config');

    if (false === $config['zfcadmin']['use_admin_layout']) {
        return;
    }

    $match = $e->getRouteMatch();
    if (!$match instanceof RouteMatch || 0 !== strpos($match->getMatchedRouteName(), 'zfcadmin')) {
        return;
    }

    $layout     = $config['zfcadmin']['admin_layout_template'];
    $controller = $e->getTarget();
    if( ! $controller->getEvent()->getResult()->terminate() ) // Add by Vinicius Garcia, to fix ->setTerminal() bug (https://github.com/ZF-Commons/ZfcAdmin/issues/8)
        $controller->layout($layout);
}

レイアウトを設定する前に追加するだけif( ! $controller->getEvent()->getResult()->terminate() )で問題が解決します。

もちろん、これはサードパーティ製モジュールの悪い習慣の変更コードですが、これを必要とするすべてのビューに余分なコードを含めるよりはましだと思います...

ZF-Commons がバグを修正すると、そのソリューションを使用してモジュールをオーバーライドできます。

于 2012-11-26T17:06:25.253 に答える
0

質問で提供するコードは、レイアウトのレンダリングを無効にし、アクションのビューのみを出力します。

あなたの質問を明確にできますか..?

于 2012-11-20T14:49:28.673 に答える
0

一時的な解決策として、Jurian Sluiman のコメントに従って、レイアウトを無効にしたい場合は、必要なアクションを呼び出すときに get パラメータを ( /?disableLayout=true) に追加するだけで済みます。

if (isset($_GET['disableLayout']) && $_GET['disableLayout'] == 'true') die();

または同様のもの(ニーズに合わせて調整してください)

于 2012-11-23T10:07:04.933 に答える