2012-09-08 70 views
0

我有一个前端控制器工作。我写了一个名为AuthController.php的登录控制器。它内部配置了相应的代码。我的问题是当我去/ auth我得到一个404。这似乎是某种路由问题。Zend新手问题与控制器

我的身份验证控制器被称为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虚拟主机配置:

<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> 
+0

有'[/ module]/controller/action'的默认路由如果你没有指定动作,那么它会尝试执行'indexAction'。很难告诉你为什么它不能通过提供的代码工作。如果404不是一个例外,而是服务器404的响应,那么你的'mod_rewrite' /'htaccess'没有正确配置。 –

+0

我检查了.htaccess,它看起来不错。也许apache配置不正确。这不在我的服务器上,所以我会检查。谢谢! –

+0

你使用的是Apache吗?你应该看看你的虚拟主机配置。如果设置不正确,您将只会显示默认索引页面,因为Apache不会将路由传递给Zend。如果可以,请共享虚拟主机配置。 –

回答

1
  1. 请确保您有启用(如果在Apache)的mod_rewrite
  2. 确保AuthController.php文件是默认的模块中(你 已经把你的IndexController.php到同一个)
  3. 检查在Apache中设置httpd.conf文件以允许覆盖(所以htaccess将工作) - 如果在debian中使用debian box,这可能是apache.conf - 但不确定其他linux类型。

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

+0

我加倍检查了一切,并在htaccess中有一个错字。现在一切都很好。谢谢! –

+0

太棒了 - 很高兴它被分类:) – MazB

1

尝试再创建一个控制器或和的TestController然后尝试访问像/测试,如果它给了错误,那么有可能是一个问题。如果一切正常,然后改变你的验证电脑板,并用不同的类名称来命名它

1

我本人到Zend的新手,在我的经验,404错误已经因发生任何

htaccess的没有配置(如Keyne中提到评论)

有没有与控制器/动作相关的观点或者它不是由我创建完全或有在文件夹/动作/查看文件名某种错字。

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

+0

对不起,这个新手问题,但'在默认模块'是什么意思?如果这是你的意思,AuthController.conf目前与IndexController.php位于同一目录中。 –

+0

@DougWolfgram评论是不是在正确的模块:) – codisfy