【问题标题】:Cakephp - Controller not foundCakephp - 找不到控制器
【发布时间】:2013-03-05 17:57:59
【问题描述】:

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

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

有什么建议吗?

【问题讨论】:

    标签: cakephp cakephp-2.0


    【解决方案1】:

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

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

    /some/path
    

    将被路由到

    SomeController::path()
    

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

    /css/
    

    将被路由到:

    CssController::index()
    

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

    【讨论】:

    • 对于那些不使用.htaccess的主机,注意从web服务器的角度看root需要是WEBROOT子目录,而不是rook cake安装。
    【解决方案2】:

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

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

    如果您使用 $this->Html->css('path') 加载您的 css 文件(显然使用正确的路径),并且您的 css 文件夹位于 webroot 中,如其他答案中所述,请检查您的 css 文件。

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

    例子:

    //Webroot folder dist
    -- css
    -- extras
       --img
    
    mydiv {
        background: #626262 url(../img/web_top_bg.png);
    }
    

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

    希望这对某人有所帮助。

    【讨论】:

    • 该解决方案为我增加了很多,谢谢。我的服务器缺少文件时遇到问题。
    【解决方案3】:

    这有点太晚了,但我刚刚遇到了这个。 @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 以获取 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); 这不在我们的服务器上。

    干杯!

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-05
      • 1970-01-01
      相关资源
      最近更新 更多