0

我有一个可以工作的前端控制器。我编写了一个名为 AuthController.php 的登录控制器。它内部配置了适当的代码。我的问题是当我转到 /auth 时,我得到一个 404。这似乎是某种路由问题。

我的身份验证控制器称为 AuthController.php,它的顶部如下所示:

class AuthController extends Zend_Controller_Action
{
public function init()
{
    /* Initialize action controller here */
}


public function indexAction()
{
    $form = new Application_Form_Login();
    $request = $this->getRequest();
    if ($request->isPost()) {
        if ($form->isValid($request->getPost())) {
            if ($this->_process($form->getValues())) {
                // We're authenticated! Redirect to the home page
                $this->_helper->redirector('index', 'index');
            }
        }
    }
    $this->view->form = $form;
}

当然,下面还有一些受保护的函数可以处理其他事情。在 Zend 中,当您创建一个新控制器时,它的存在(如在 CodeIgniter 中)是否意味着它应该可用?还是我必须将它添加到某处的路由表中?

编辑:这是我的 Apache Vhost 配置:

<VirtualHost *:80>
ServerName      new.mydomain.com
DocumentRoot    /www/htdocs/zend/public
<Directory /www/htdocs/zend/public>
  DirectoryIndex index.php
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>
</VirtualHost>
4

3 回答 3

1

尝试创建另一个控制器或 testController 然后尝试访问 /test 如果它给出错误,那么可能有问题。如果它有效,则更改您的 Auth 控制器并用不同的类名命名

于 2012-09-08T23:48:29.243 回答
1

我自己是zend的新手,根据我的经验,由于以下原因发生了404错误

htaccess 未配置(正如 Keyne 在评论中提到的那样)

或者

没有与控制器/操作关联的视图,或者它不是我完全创建的,或者文件夹/操作/视图文件名中有某种错字。

因此,请确保上述 2 不是这种情况。

于 2012-09-09T04:01:46.830 回答
1
  1. 确保您启用了 mod_rewrite(如果在 Apache 上)
  2. 确保 AuthController.php 文件位于默认模块中(与您放入 IndexController.php 的相同)
  3. 检查 httpd.conf 文件是否在 Apache 中设置为允许覆盖(因此 htaccess 将起作用) - 如果使用带有 debian 挤压的 debian 框,这可能是 apache.conf - 虽然不确定其他 linux 类型。

如果所有这些都是正确的,那么它应该可以正常工作。

于 2012-09-09T13:09:26.733 回答