Cakephp - 未找到控制器

时间:2013-03-05 17:57:59

标签: cakephp cakephp-2.0

我一直收到这个错误......想知道这意味着什么

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

有什么建议吗?

3 个答案:

答案 0 :(得分:6)

您似乎错过了webroot中的'css'目录或错误配置的mod_rewrite;

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

/some/path

将路由到

SomeController::path()

如果您在您的webroot中有一个'css'目录,那么;

/css/

将路由到:

CssController::index()

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

答案 1 :(得分:1)

调试此问题的人的一点建议。

thaJeztah对于出现错误的原因绝对正确,但出于调试目的,很难知道导致此错误的css路径在哪里。

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

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

示例:

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

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

很明显图像没有加载,但我没有注意到,因为它不是经常被实例化的元素。解决该url()引用摆脱了CssController错误(以及相关的,关于this other annoying error摆脱multiple request for the same page only in some browsers(当你必须调试那些东西时,这不是很好......))

希望这有助于某人。

答案 2 :(得分: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. 现在打开终端并导航到蛋糕错误日志文件夹app/tmp/logs/,并执行tail -100 error.loguse grep CssController error.log | grep 2019-11-25以获取日期为2019-11-11的CssController的错误日志。 25,将日期替换为当前日期以限制错误日志。

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

    < / li>
  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); 不在我们的服务器上。

干杯!