CakePHP 2.1.0:如何创建“停机维护”页面

2024-02-12

我正在尝试实现类似的东西马克·斯托里的“停机维护”页面 http://mark-story.com/posts/view/quick-and-dirty-down-for-maintenance-page-with-cakephp使用 CakePHP 2.1.0。我非常接近实现这一目标,但我遇到了两个需要帮助的问题。首先,这是所有相关代码(六个文件):

1)应用程序/配置/bootstrap.php:

Configure::write('App.maintenance', true);

2)应用程序/配置/core.php:

Configure::write('debug', 1);

...

Configure::write('Exception', array(
    'handler' => 'ErrorHandler::handleException',
    'renderer' => 'AppExceptionRenderer',
    'log' => true
));

3)应用程序/控制器/AppController.php:

if (Configure::read('App.maintenance') == true) {
    App::uses('DownForMaintenanceException', 'Error/Exception');
    throw new DownForMaintenanceException(null);
}

4)应用程序/Lib/Error/Exception/DownForMaintenanceException.php:

<?php
class DownForMaintenanceException extends CakeException {}

5)应用程序/Lib/Error/AppExceptionRenderer.php:

<?php
App::uses('ExceptionRenderer', 'Error');

class AppExceptionRenderer extends ExceptionRenderer {
    function _outputMessage($template) {
        // Call the "beforeFilter" method so that the "Page Not Found" page will
        // know if the user is logged in or not and, therefore, show the links that
        // it is supposed to show.

        if (Configure::read('App.maintenance') == false)
        {
            $this->controller->beforeFilter();
        }

        parent::_outputMessage($template);
    }

    public function downForMaintenance() {
        $url = $this->controller->request->here();
        $code = 403;
        $this->controller->response->statusCode($code);
        $this->controller->set(array(
            'code' => $code,
            'url' => h($url),
            'isMobile' => $this->controller->RequestHandler->isMobile(),
            'logged_in' => false,
            'title_for_layout' => 'Down for Maintenance'
        ));
        $this->_outputMessage($this->template);
    }
}

6)应用程序/视图/错误/down_for_maintenance.ctp:

<p>Down for Maintenance</p>

现在,针对我遇到的两个问题。首先,此代码仅在 debug 设置高于 1 时才有效。对此我能做些什么吗?这是否表明我的处理方式是错误的?第二个问题是,尽管我将“isMobile”和“logged_in”视图变量设置为boolean“downForMaintenance”方法中的值,“app/View/Layouts/default.ctp”文件将它们视为strings。对此我能做什么?

Thanks!


这是 cakephp 的快速而肮脏的维护页面

在公共index.php中

define('MAINTENANCE', 0); 
if(MAINTENANCE > 0 && $_SERVER['REMOTE_ADDR'] !='188.YOUR.IP.HERE')
{
require('maintenance.php'); die(); 
}

然后,当您想要关闭网站时,只需更改 MAINTENANCE = 1,并且您仍然可以在家里/办公室查看该网站。

奖励:适用于所有版本的蛋糕!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CakePHP 2.1.0:如何创建“停机维护”页面 的相关文章

  • CakePHP:控制台命令中的自定义错误报告

    我们当前使用 CakePHP 2 4 7 和自定义错误处理程序 自定义错误处理程序适用于通过 HTTP 或 CronDispatcher 发出的每个请求 不幸的是 当向我们的控制台命令之一发出控制台请求时 错误处理程序被忽略 请参见以下示例
  • 在 cakephp 2.0.2 中使用 shell 类的插件组件

    我想使用我的 shell 类中的插件组件 我正在尝试使用 App import Component Myplugin Mycomponent this gt Mycomponent new MycomponentComponent 不幸的是
  • Cakephp 验证后,所有表单字段都为空,并出现表单错误

    我有问题 我尝试填写表单 然后单击提交按钮 然后它显示表单错误 但所有文本框字段都变为空白 并且可以显示表单错误 我希望它变得与验证之前相同的值 就像我不想在验证后清除 清空值一样 我做了这样的事情 在视图中 div class regfo
  • 我可以停止 CakePHP 获取查询的所有行吗?

    我正在使用 CakePHP 和 modelName gt find 调用选择相当多的行 可能是数百行 通常 在 PHP MySQL 中这当然不会成为问题 因为您在 while 循环中获取它们 但是 CakePHP 将所有行加载到一个数组中
  • 有没有 CakePHP 离线手册

    曾经有过 但似乎没有任何直接联系 经过一番挖掘 发现了一些答案 我认为分享这些答案会很有用 这些是一页中的手册链接 对于离线使用很有用 使用 Dardo Sordi Bogado 的构建脚本或创建 PDF 1 2 一页手册https web
  • CakePHP GROUP 和 COUNT 个项目在列表中返回

    我知道这里有一些类似的问题 但它们都是关于使用时的 Model gt find all 但这不是我正在做的 我正在做的 Model gt find list 这就是工作与不工作之间的区别 给定一组产品 我想找到该组中的所有品牌以及每个品牌的
  • Cakephp:将 AppController 抽象到另一个层次,可能吗?

    我想知道是否可以在 AppController 和我的应用程序的其他控制器之间添加另一个抽象控制器 这样我的控制器 例如UsersController 扩展了 SecureController SecureController 扩展了 Ap
  • 在 CakePHP 中访问 Configuration::read 控制器

    我的 CakePHP 应用程序有一个单独的配置文件 该文件加载在 bootstrap php 中 我的问题是 如何访问控制器中的配置变量 IE 如何在控制器中执行Configure read variable 函数 谢谢 在我的自定义配置文
  • CakePHP Facebook 集成与 CakePHP-Facebook-Plugin 的注销问题

    我正在寻找一种方法CakePHP Facebook 插件 https github com webtechnick CakePHP Facebook Plugin让用户退出我的应用程序 但不让他们退出他们自己的 Facebook 如果我调用
  • 如何使用 wamp 在 Windows 上烘焙 cakephp 2.0 应用程序

    我想在Windows系统上烤蛋糕php项目 我正在使用 wamp 服务器来运行 PHP mysql 我已经浏览过 cakephp 网站上的视频投射 并设置了环境设置 按照演示给出命令 蛋糕 后 最后我收到一条消息说 php 不被识别为内部或
  • 按 ID 分组和按日期排序

    lastComments this gt Comment gt find all array fields gt array Comment news id Comment date Comment content group gt arr
  • CakePHP 3 API 的 POST 请求不起作用

    我正在使用 CakePHP 3 x 文档开发 API 为了开发这个 API 我使用了他们的官方文档 https book cakephp org 3 0 en development rest html https book cakephp
  • Cakephp 自定义日期输入表单助手的输出

    I got echo this gt Form gt input birthdate array label gt Geburtsdatum true dateFormat gt DMY minYear gt date Y 70 maxYe
  • 性能:cakephp-mysql 中的 UUID 与自动递增

    我正在搜索 cakePHP 生成的 UUID 32 个字符长 是否比自动增量在性能上更快 插入和选择操作的比较 我应该使用 cakePHP 生成的 UUID 还是使用 MySQL 的简单自动增量生成的 UUID 这是我发现的一个案例研究 但
  • cakephp auth->admin 的登录重定向

    我对 cakePHP 相当陌生 并且已经阅读了蛋糕网站上的所有教程 我正在使用 cake 2 1 构建一个小型示例应用程序 但遇到了问题 基本上 我希望管理员用户在登录时重定向到与普通用户重定向到的页面不同的页面 我确信有一个简单的方法可以
  • 使用 CakePHP 为自定义模板链接创建分页

    我遵循分页链接的自定义模板 li class prev a href prev a li li a href class active 1 a li li a href 2 a li li a href 3 a li li a href 4
  • 如何在 Cakephp 3 中创建按字段集分组的多个复选框

    我在阅读本文档时遇到问题 Cakephp3 Cookbook 表单 创建选择选择器 http book cakephp org 3 0 en views helpers form html creating select pickers我尝
  • CakePHP 2.0 还需要在模型中声明 $name 吗?

    我的印象是我们必须声明 public name ModelName 在 PHP4 专用的模型中 现在 cakephp 不再支持 PHP4 我认为模型中不再需要 name 声明 不过 食谱仍然有包含它的说明 http book cakephp
  • 未找到 CakePHP DebugKit/插件 webroot

    我已经安装了 CakePHP 的调试工具包 但它无法在我的页面上正确加载 它只是页面底部的一堆文本和数组 我的浏览器显示出现 404 错误 debug kit css debug toolbar css debug kit js jquer
  • 防止 CakePHP 在实例化模型时自动连接数据库

    我公司的 DBA 有一个脚本 可以自动终止生产数据库上长时间运行的数据库连接和查询 我编写了一个在循环中运行的 CakePHP Shell 应用程序 有点像守护进程 需要定期进行数据库读取和写入 如果运行时间太长 维护脚本会关闭数据库连接

随机推荐

  • 将整个开发分支重新建立到新的主分支上

    我正在使用一个存储库 理论上该存储库应该遵循 Gitflow 工作流程 请参阅成功的 git 分支模型 http nvie com posts a successful git branching model 作者 文森特 德里森 但是 存
  • 使用 LUKS 收到“此密码无可用密钥”

    我的笔记本电脑有一个加密磁盘 经过一个apt upgrade几个小时后 强制关闭我的密码不再解密我的磁盘 我从 Debian Live USB 棒启动并尝试了几件事 Can I decrypt the partition with my p
  • Laravel 需要使用 Carbon 类仅显示日期而不是时间

    目前 我正在使用 碳 现在 它显示日期和时间 2015 03 10 23 23 46 但我只需要一个约会 2015 03 10 http carbon nesbot com docs api formatting http carbon n
  • 元素' aria-label='将 'tools:replace="Android:value"' 添加到 AndroidManifest 的 元素'> 将 'tools:replace="Android:value"' 添加到 AndroidManifest 的 元素

    我正在遵循 HeadFirst Android 开发教程 并在添加后遇到问题 私人 ActionBarDrawerToggle 抽屉切换 该控件已被弃用 因此我按照 Stack 上的说明通过将 com android support app
  • MySql 查询:包含 COUNT(id) == 0 的天数,但仅在过去 30 天内

    我正在执行一个查询 以获取过去 30 天内每天从数据库中生成的数量 但也需要标记没有构建的日子 在我的 WHERE 子句中 我使用 Submittime 来确定是否有构建 如何修改它以包含 COUNT id 0 但仅在过去 30 天内的日期
  • CORS 不适用于 Chrome

    我已经在服务器上设置了跨源资源共享 使用 CrossOriginFilter 的 Jetty 它在 IE8 和 Firefox 上完美运行 在 Chrome 上 它只是 没有 ajax url crossOriginURL type GET
  • Pandas 计算机每小时平均值并设置在间隔中间

    我想计算风速和风向时间序列的每小时平均值 但我想将时间设置为半小时 因此 14 00 到 15 00 之间的值的平均值将为 14 30 现在 我似乎只能在间隔的左侧或右侧得到它 这是我目前拥有的 ts g item replace seco
  • 无法下载eclipse插件

    我正在尝试下载 eclipse 的 kotlin 插件 我能够连接到 eclipse 市场 但是当我尝试下载它时 出现错误 Unable to read repository at https dl bintray com jetbrain
  • 对 Pandas 数据框中的行对应用函数

    我是 pandas dataframe 的新手 我想应用一个在同一列中获取几行的函数 就像当您应用函数 diff 时一样 但我想计算文本之间的距离 所以我定义了一个测量距离的函数 我尝试使用 apply 但我不知道如何选择几行 下面我展示了
  • 石墨总结数据点

    我在用着graphite http graphite wikidot com 收集数据 我想检索一段时间内某些事件的总数 比如说 每周的登录次数 但是 我只需要总数 不需要查看它如何随时间变化 当我使用类似的东西时from 1w targe
  • Symfony 5 Api 测试 createClient() LogicalException

    正如标题所示 我正在使用 Symfony 5 构建一个 API 我有一些控制器需要不同的用户权限 我想测试它们 所以我决定创建两个具有不同角色的用户用于测试目的 ROLE USER and ROLE ADMIN 当前的代码是这样的 注意 这
  • MySql:显示列但排除除字段名称之外的所有内容

    我想将表的字段名称从 MySql 提取到 python 中 我知道 show columns from project 将工作 我读到您可以添加 WHERE 以将其限制为某些字段 但我找不到如何仅返回列名而不返回类型 键 空 额外信息的示例
  • Rails.cache.clear 和 rake tmp:cache:clear 有什么区别?

    这两个命令等效吗 如果不是 有什么区别 rake 任务仅清除存储在文件系统中的文件 Rails root tmp cache 这是该任务的代码 namespace cache do desc Clears all files and dir
  • 需要了解SemaphoreSlim的用法

    这是我的代码 但我不明白是什么SemaphoreSlim是在做 async Task WorkerMainAsync SemaphoreSlim ss new SemaphoreSlim 10 List
  • ASP.NET / IIS 远程调试 - DEBUG 动词

    我正在寻找有关 DEBUG HTTP 动词的详细信息 我很清楚这是用于远程调试 尽管我什至不确定它是用于 IIS 还是 ASP NET 如果我想直接访问此界面 即不通过 Visual Studio 而是手动发送这些命令 我需要知道什么 它的
  • 我需要为初级程序员进行一些简单的逻辑/编程练习[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我目前正在教授员工 ECMA 脚本 因为维护我们使用的工作流程系统需要它 并且我需要一些挑战来用作练习 我们已经涵盖了大部分语言 他现在非
  • 为遗留库创建代码契约

    最终目标是为驻留在我无法控制的外部程序集中的类指定契约 即我不能直接向该类添加契约 到目前为止我已经尝试过 ContractClassFor属性 不起作用 因为目标类必须指向合约类 通过对自动生成的程序集进行逆向工程 手动构建合同引用程序集
  • Bingpreview 使电子邮件中的一次性链接失效

    Outlook com 似乎使用必应预览 https www bing com webmaster help which crawlers does bing use 8c184ec0爬虫来爬行电子邮件中的链接 但在打开电子邮件后 用户有机
  • GCC 选项强制执行 Ansi C 标准检查?

    我应该使用哪些 gcc 选项来强制执行 ANSI C C99 警告 错误 gcc GCC 3 4 2 mingw 特殊 我在用着 gcc 学究式 ansi std c99 它是否正确 The ansi标志是同义词 std c89 flag
  • CakePHP 2.1.0:如何创建“停机维护”页面

    我正在尝试实现类似的东西马克 斯托里的 停机维护 页面 http mark story com posts view quick and dirty down for maintenance page with cakephp使用 Cake