如何在CakePHP 1.3中修改$ content_for_layout

问题描述 投票:0回答:1

我正在使用CakePHP 1.3。在app/views/layouts/default.ctp中,我使用的是:

<?php echo $content_for_layout;?>

根据Ahsanul Bari和Anupom Syam的CakePHP应用程序开发,

“此行主要负责放置控制器渲染的视图布局中的内容。我们必须包含此内容以告诉Cake在哪里放置操作特定的控制器呈现的视图。“

我试图弄清楚如何修改$content_for_layout的内容。但是我想那不是我应该修改以修改布局的那种变量。我要完成的工作是修改$content_for_layout或创建新的布局以自定义A / B测试实验的某些元素。您能帮助我更好地了解如何操作$content_for_layout吗?谢谢。

UPDATE 1:

我正在配置A / B测试实验。我在app/views/layouts/default.ctp中有这个:

<body>
    ..........
    <div id="split-test-homepage-content-original">
        ..........
        <?php echo $content_for_layout;?>
        ..........
    </div>
    <div id="split-test-homepage-content-redesign">
        ..........
        <?php echo $content_for_layout;?>
        ..........
    </div/>
</body>

[使用CSS,根据隐藏测试将显示的版本,我隐藏/显示split-test-homepage-content-originalsplit-test-homepage-content-redesign。但是我遇到了问题,因为$content_for_layout被渲染了两次。即使在视觉上,人们只看到一个版本,但在后台页面却在同一页面上两次加载了$content_for_layout。这给我造成了各种各样的问题,例如重复的表格,由于重复的变量导致JavaScript元素无法正常工作等。我想做的是修改$content_for_layout<div id="split-test-homepage-content-redesign">的作用。我正在考虑的一种选择是使用JavaScript,以便在jQuery(document).ready(function($) {部分中可以做实验,以便如果变量包含特定的布尔值,则显示一个版本或另一个版本。像这样的东西:

if(javascriptvariable==true){,然后将以下HTML用于视图:

<div id="split-test-homepage-content-original">
    ..........
    <?php echo $content_for_layout;?>
    ..........
</div>

否则,Javascript将不显示以上内容,但这是这样:

<div id="split-test-homepage-content-redesign">
    ..........
    <?php echo $content_for_layout;?>
    ..........
</div/>

JavaScript方法对您有意义吗,或者我应该对创建新的布局或修改$content_for_layout做些什么?谢谢。

cakephp model-view-controller layout cakephp-1.3 cakephp-1.2
1个回答
0
投票

复制内容肯定是自找麻烦。我使用了一种更好的方法来操作CSS类和id,而无需重复内容。

© www.soinside.com 2019 - 2024. All rights reserved.