【问题标题】:Zend index controller problemZend 索引控制器问题
【发布时间】:2011-08-24 15:44:18
【问题描述】:

我正在尝试使用 Zend 框架创建应用程序,所以 我已经使用 zf 工具创建了基本的应用程序结构。

现在,当我尝试使用 http://localhost/zendApp/public/index.php 启动应用程序时 默认的“欢迎使用 Zend 框架!”页面加载。

但是当我输入 http://localhost/zendApp/public/http://localhost/zendApp/public/index 索引控制器没有被调用,但是 而是我收到错误消息:

*指定的控制器无效(zendApp)

array (
  'controller' => 'zendApp',
  'action' => 'public',
  'module' => 'default',
)
  • 如您所见,它正在尝试使用应用程序名称启动控制器。 此外,如果我在索引控制器中创建其他操作并使用 http://localhost/zendApp/public/index/newaction 调用它 我得到同样的错误:

    数组 ( '控制器' => 'zendApp', '行动' => '公共', '索引' => '新动作', '模块' => '默认', )

你能帮我理解为什么没有调用索引控制器吗? 谢谢。

【问题讨论】:

    标签: php zend-framework controller


    【解决方案1】:

    您的控制器的 url 不包括公用文件夹。例如 UserController 将是 http://localhost/zendApp/user/ 不是 http://localhost/zendApp/public/user,您的索引控制器应该在 http://localhost/zendApp/http://localhost/zendApp/index 上工作。

    您的 url rewiter(例如 mod_rewrite)应该设置为将所有 url 重写为 /public/index.php,而不是静态文件,例如图像、css js 等。请参阅here

    您是否有此设置: “如果您要部署到“用户”站点(例如 http://localhost/~rob),那么您需要在 .htaccess 文件中添加一个类似于:RewriteBase /~rob/zf-tutorial/public/ 的 RewriteBase 行,来自 here

    【讨论】:

    • 感谢您的回答,我明白您的意思。但我认为 zend 的默认设置是完全通过公用文件夹访问控制器 - 开发人员猜测,在 Web 服务器上部署时,您只会将 index.php 放在公用文件夹中,而将应用程序的其余部分放在公用文件夹之外。但这在我本地开发时并不可靠,所以我会使用你所说的。
    • 当我阅读文章 bogartcomputing.com/web-programming-answers/213/… 时,我首先找到了解决问题的方法。看来我错过了这个:“行 C:\xampp\php\php.ini, uncomment extension=php_pdo.dll extension=php_pdo_sqlite.dll”
    • 非常确定 Zend 的默认结构是将控制器放在应用程序文件夹中,在 public 之外,public 仅用于资产和设置环境并调用引导程序的 index.php。 framework.zend.com/manual/1.11/en/…
    猜你喜欢
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    相关资源
    最近更新 更多