5

我不断收到此错误...想知道这意味着什么

Error: [MissingControllerException] Controller class CssController could not be found.

有什么建议么?

4

3 回答 3

6

您似乎缺少 webroot 中的“css”目录或配置错误的 mod_rewrite;

默认的 CakePHP mod_rewrite 配置会将不存在的目录/文件“路由”到控制器和操作,例如

/some/path

将被路由到

SomeController::path()

如果您的 webroot 中没有“css”目录,那么;

/css/

将被路由到:

CssController::index()

但是,由于您的应用程序中没有这样的控制器,因此会出现此错误。

于 2013-03-05T18:44:28.300 回答
1

给那些调试这个问题的小提示。

thaJeztah 关于为什么会出现该错误是绝对正确的,但是出于调试目的,很难知道导致此错误的有问题的 css 路径在哪里。

如果您使用$this->Html->css('path')加载您的 css 文件(显然使用正确的路径),并且您在 webroot 中有您的 css 文件夹,如另一个答案中所述,那么请检查您的 css 文件。

在我的情况下,我用 firebug 进行了调试,但是我所有的 .css 加载时,没有红色错误表明无法加载 css 文件(这可能是导致此问题的原因)。所以我检查了我的css文件和指向不存在文件夹的背景网址

例子:

//Webroot folder dist
-- css
-- extras
   --img

mydiv {
    background: #626262 url(../img/web_top_bg.png);
}

很明显,图像没有加载,但我没有注意到,因为它不是经常实例化的元素。解决该 url() 引用消除了 CssController 错误(并且,相关的,消除了有关仅在某些浏览器中对同一页面的多个请求的其他烦人的错误(当您必须调试这些东西时,这不是很好。 ..))。

希望这可以帮助某人。

于 2014-08-29T20:03:50.993 回答
0

这有点太晚了,但我刚刚遇到了这个。@thajeztah 已通过详细解释正确回答了这个问题。

但是,在这里找到错误似乎是最大的问题,这些是我重现问题所采取的步骤。

  1. 像创建任何其他控制器一样创建任何缺少的控制器。在这种情况下,我们创建 CssController
  2. 创建第一个函数索引并编写一个简单的脚本来为您提供请求的完整路径。只是因为我很懒,我创建的脚本向我发送了一封电子邮件,其中包含请求的完整路径。

    class CssController extends AppController{
        public function beforeFilter(){
             $this->Auth->allow('index');
        }
    
        public function index(){
            $this->autoRender = false;
            $this->sendMail('myemail@address.com', 'Path', Router::url($this->here, true), array($this->adminEmail => $this->siteTitle));
        }
    }
    
  3. 现在打开终端并导航到 cake 错误日志文件夹,app/tmp/logs/然后执行tail -100 error.loguse grep CssController error.log | grep 2019-11-25获取 CssController 在日期 2019-11-25 的错误日志,将日期替换为当前日期以限制错误日志。

  4. 您现在将获得所有缺少的所谓必需的操作,您将像上面的索引函数一样创建这些操作,然后记录原始请求的路径或使用该路径向您自己发送电子邮件。

  5. 这应该可以帮助您从 css 中找到所有未正确路由的文件。

就我而言,我们已经下载了很棒的字体图标并将它们包含在我们的模板中。然而,Font Awesome 需要其他文件,这些文件不在我们的服务器上,这导致了错误。请看下面

@font-face {
    font-family: "Font Awesome 5 Brands";
    font-style: normal;
    font-weight: normal;
    font-display: auto;
    src: url(../webfonts/fa-brands-400.eot);
    src: url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"), url(../webfonts/fa-brands-400.woff2) format("woff2"), url(../webfonts/fa-brands-400.woff) format("woff"), url(../webfonts/fa-brands-400.ttf) format("truetype"), url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")
}

如上所示,我们正在尝试加载src: url(../webfonts/fa-brands-400.eot); 不在我们服务器上的内容。

干杯!

于 2019-11-25T16:00:59.177 回答