【问题标题】:CakePHP: Embed CTP filename and path in views and elementsCakePHP:在视图和元素中嵌入 CTP 文件名和路径
【发布时间】:2011-04-08 11:32:23
【问题描述】:

我正在寻找一种优雅的方式来让 jquery 了解包含给定 dom 选择的 ctp 文件的文件名和路径。我正在使用 simple_html_dom 通过 ajax 调用对模板苍蝇进行更改。我需要提供包含我选择的 dom 元素的视图或元素模板 ctp 文件的文件名和路径,以便将更改写入正确的文件。

除了手动将此信息传递到我的应用程序中的每个视图和元素之外,是否有一种优雅(且安全)的方式可以使这些信息对 jquery 可用?

此外,我有什么理由担心将这些信息以纯文本形式嵌入到文档中?存放它的最合适的位置是什么?我的第一个想法是在元素的 title 属性中,但是有没有更合适的位置?

谢谢!

更新 这个问题最好提出来:透明地扩展或修改 cake 中的每个视图和元素的最佳方法是什么?我现在在 beforeRender 中从 app_controler 向下传递一些信息,但据我所知,这不允许我传递有关单个元素视图文件的信息。理想情况下,每个视图和元素都会在 dom 元素中查找某个类名的存在,并在渲染之前在该元素的标题属性中插入路径和文件名信息。我想不出一个好的方法来做到这一点!

【问题讨论】:

  • 动态修改模板文件,即自我修改代码,听起来是个坏主意。恕我直言,您应该重新考虑您要在这里做什么。从你的最后一段来看,我不确定你想要完成什么。
  • 谢谢!我最终扩展了 view.php,就像 debug_toolkit 插件在渲染元素的开头和结尾添加注释一样,因为我也需要访问元素模板名称,我会尽快为感兴趣的人写一个答案!
  • @decaze 你的观点很好,我正在研究不需要修改模板的其他选项。谢谢!

标签: php jquery ajax cakephp simple-html-dom


【解决方案1】:
<div rel="<?php echo __FILE__; ?>">...</div>

除非我不理解你

【讨论】:

    【解决方案2】:

    您可以创建自己的 View 类来为您处理此问题。在“views”文件夹中,创建一个名为(例如)的文件:custom.php。

    此文件应包含扩展 CakePHP 的基本 View 类的类,名为“CustomView”。然后,在您的 AppController 的 beforeFilter 中,设置 $this->view = 'Custom'。我不确定哪种方法最适合您想要做的事情,但 render() 或 renderLayout() 可能是开始寻找的好地方。

    【讨论】:

    • 呸。我没有注意到这个古老的日期。看起来你按照我的建议做了。
    猜你喜欢
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 2021-12-01
    • 2012-05-26
    • 1970-01-01
    • 2018-01-02
    相关资源
    最近更新 更多