1

次の方法で、コントローラー クラス (yii フレームワーク) の出力を取得しようとしています。

ob_start();
$controller->actionView(4);
ob_end_flush();
assertContains('needlestack', ob_get_contents());
ob_clean();

編集:

の使用に関係しているようです

驚いたことに、出力には未実行の PHP コードが含まれています。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="language" content="en" />
    <meta name="description" content="<?=Yii::app()->params['description']?>" />

    <link rel="shortcut icon" href="<?= bu('/images/favicon.png') ?>" />

    <?= $this->renderPartial('//site/_header_js'); ?>

    <link rel="stylesheet" type="text/css" href="/usr/bin/assets/905db112/detailview/styles.css" />
<title><?= CHtml::encode($this->pageTitle); ?></title>

    <link type="text/css" rel="stylesheet" href="<?= bu('css/style.css')?> "/>
    <link type="text/css" rel="stylesheet" href="<?= bu('css/form.css')?> "/>

    <script type="text/javascript" language="javascript" src="<?= bu('js/commonjs.js') ?>"></script>


</head>

<body class="<?= $this->bodyClass ?>">
    <div class="wrapper">
        <!-- Header -->
        <?= $this->renderPartial('//site/_body_header'); ?>

        <?= $content; ?>    
    </div>

    <!-- Footer -->
    <?= $this->renderPartial('//site/_body_footer'); ?>
    <?= $this->renderPartial('//site/_footer_js'); ?>

</body>
</html>

PHP はどのようにして未実行の PHP コードをエコーすることができますか? 結果の HTML を取得するにはどうすればよいですか?

4

2 に答える 2

3

<?=構文は短いタグであり、php インストールで無効になっているようです。ファイルでに設定short_open_tagするか、スクリプトの先頭で使用できます。1php.iniini_set( "short_open_tag", 1 );

于 2011-07-18T23:52:55.280 に答える
2

短い開始タグは有効になっていますか? そうでない場合、 and のような構文は<? ... ?>解析<?= ... ?>されません。

于 2011-07-18T23:54:02.333 に答える