【问题标题】:Set page title in static page view在静态页面视图中设置页面标题
【发布时间】:2011-01-14 19:40:30
【问题描述】:

我正在使用 CakePHP 1.3

我有一个名为temp.ctp 的静态页面,位于app/views/pages/temp.ctp

可以从我的网站访问,例如:localhost/pages/temp

我正在尝试从视图中设置页面标题。

我已尝试将以下各项放入 temp.ctp 文件中:

<?php $this->set("title_for_layout","Temp Temp Temp"); ?>

<? $this->pageTitle = 'Temp Temp Temp'; ?>

整个文件如下所示:

<?php $this->set("title_for_layout","Temp Temp Temp"); ?>


Hello World temp

并且正在使用 cakephp 1.3 附带的默认 layout(用于页眉和页脚)。

这两种方法都没有奏效。这样做的正确方法是什么?

【问题讨论】:

  • 能否给我们 temp.ctp 的内容。或者至少是
    .
  • 当您在浏览器中看到结果时,正在呈现什么 HTML?
  • @Marc 在你问我渲染了什么 html 之后,我查看了源代码,我看到 标签设置为 <code>CakePHP: the rapid development php framework: Temp Temp Temp</code>,所以我假设 cake 的默认布局只是附加了 @ 987654329@ 到 <title> 标签而不是替换它。我之前没有意识到这一点,因为我的标题栏不够宽,无法查看整个内容。谢谢:)

标签: php cakephp


【解决方案1】:

根据CakePHP Google Group 上的一个帖子,应该可以在您的视图中直接使用$this-&gt;set("title_for_layout","Temp"); - 在CakePHP 1.3 中,即1.2 使用this-&gt;pageTitle = "Temp";

根据票证,页面控制器仍然使用 $title 而不是 $title_for_layout,所以尝试一下:

$this-&gt;set("title","Temp");

http://cakephp.lighthouseapp.com/projects/42648/tickets/511-pages-controller-needs-updating-for-title_for_layout

【讨论】:

【解决方案2】:

首先要了解的是,在默认设计下,您不应该从视图文件中设置页面标题。那个时候其实已经太晚了。控制器将您的最终 HTML 呈现为两部分: 它将 View 放入 Layout 中。布局文件是默认使用$title_for_layout设置页面标题的位置。

看看 cake/libs/view/layouts/default.ctp。在&lt;head&gt; 你会看到这个,它解释了你已经描述的内容

<title>
    <?php __('CakePHP: the rapid development php framework:'); ?>
    <?php echo $title_for_layout; ?>
</title>

因为控制器是您设置 viewVars 的地方,$this-&gt;set("title_for_layout","Temp Temp Temp");仅在控制器中有效。它在视图或布局文件中没有任何作用(正如您在问题中记录的那样)。

您可能有充分的理由跳过布局并使用单个静态视图 .ctp 文件。为此,请在控制器中将 autoLayout 变量设置为 false。您可以像设置名称、用途等变量一样为整个 Controller 设置此项:var $autoLayout = false; 或使用 $this-&gt;autoLayout = false; 逐个方法。

现在 Cake 只渲染你的视图 .ctp 文件,没有布局的包装。所有 viewVar 仍然可用,因此您可以根据需要使用 $title_for_layout,否则硬编码标题。无论哪种方式,您都需要在视图 .ctp 文件的顶部包含您自己的 &lt;head&gt;/&lt;title&gt; 代码,因为它不再包含在布局中。

【讨论】:

    猜你喜欢
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多