0

我有一个包含两个操作的控制器文件,即:

class IndexController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        // action body
    }

    public function doLoginAction()
    {
        // action body
    }
}

及其对应的视图文件。即当我点击http://www.mydomain.com/index 它加载索引视图。我面临的问题是,当我尝试访问此控制器的索引操作时,它将加载相应的视图,但是当我尝试点击 dologin 操作时,它会给出错误

http://www.mydomain.com/index/dologin

*消息:操作“dologin”不存在并且没有被困在 __call()*

请求参数:

array (
  'controller' => 'index',
  'action' => 'dologin',
  'module' => 'default',
)  

当我用另一个控制器和动作尝试它时,也会发生同样的情况。该控制器的索引操作也可以正常运行,但控制器中的任何其他操作都不能正常运行。

PS:我已经在 apache 配置文件中配置了 mod_rewrite 模块和 AllowOverride ALL

4

2 回答 2

0

骆驼大小写的动作名称预计将作为参数虚线。因此,doLoginAction() 将响应 /default/index/do-login,而不是 dologin。如果您希望 URL 为 dologin,则应将操作重命名为 dologinAction()。

于 2012-05-02T12:39:07.380 回答
0

您也可以在控制器级别使用连字符(-)分隔的 url。

假设您需要这样的网址:

http://www.mydomain.com/do-some-stuff/my-stuff/

那么你的控制器应该被命名为:

DoSomeStuffController (as class name) && DoSomeStuffController.php (as controller file name)

myStuffAction() (as your method name)
于 2014-05-14T07:59:42.453 回答