CakePHP需要一个不需要/使用的动作

时间:2011-09-08 10:33:52

标签: php asp.net-mvc cakephp

我最近从MVC3开始学习CakePHP,我不得不说这是一个非常颠簸的旅程。我设法解决了大部分初期问题,但我正在与一个我似乎无法解决的非常烦人的问题作斗争:

我的网站地址是localhost/hogeacts/<controller>/<action> [或者我会想到的。]

有几个文件[我把它们剥离到必要的]涉及这个问题,所以对我来说是光着的:

控制器

class FactsController extends AppController
{      
    var $name = "Facts"; 
    var $helpers = array('Javascript');

    function index(){}        
    function latest($count)
    {
        // Uses a blank Layout so I get the JSON out of it
        $this->layout = 'ajax';

        // Model defined function, I still like fat models - skinny controllers
        $facts = $this->Fact->getLatest($count);

        $this->set('facts', $facts);
    }

视图

<div id="content"></div>

<div id="scripts">
    <?php echo $javascript->link('index', false) ?>
</div>

脚本

var index_obj = {
    init: function() {
        $.ajax({
            url: "/facts/latest/2",
            success: function(r)
            {
                $("#content").hide();
                $("#content").html(r);
                $("#content").fadeIn();
            }
        });
    }
}

$(function() {
    index_obj.init();
});

'部分视图'

<?php echo $this->element('factlist', array('facts' => $facts)); ?>

还有元素,但这只是用于显示,我真的不认为它与错误有任何关系。

现在,每当我访问localhost/hogeacts/facts时,我得到正确的结果,一切似乎都按预期工作,javascript加载,调用调用元素的局部视图,它们显示在#content div中。到目前为止一切都那么好,但如果我访问localhost/hogeacts/facts/index哪个应该做同样的事情,我得到:

错误

Missing Method in FactsController

Error: The action facts is not defined in controller FactsController

Error: Create FactsController::facts() in file: app\controllers\facts_controller.php.

<?php
class FactsController extends AppController {

    var $name = 'Facts';


    function facts() {

    }

}
?>

我错过了什么?

1 个答案:

答案 0 :(得分:1)

似乎在我的JavaScript中,当我应该调用url: "/facts/latest/2"而不重新指定控制器时,我正在调用url: "latest/2"。它将事实解释为一个动作而不是控制器,这就是我犯错误的原因