【问题标题】:404 error with unknownclass exception in yii2yii2 中出现未知类异常的 404 错误
【发布时间】:2015-11-02 21:05:40
【问题描述】:

我是 yii2 的新手。我已经成功提取了高级 yii2 zip 模板。 已经设置了 db 和 .htaccess 文件。

在控制器中创建新控制器、模型和动作并导航到该位置。例如:http://localhost/advanced/frontend/web/mysetofusers/signin

我面临三个问题。 1.它说404错误。 2. 说 UnKnownClassException - 即无法在文件 frontendControllers\mysetofusersController.php 命名空间中找到 mysetofusersController?即使该文件在文件夹中并且使用了确切的名称空间。 3. 它总是重定向到站点/索引页面,而不是显示 mysetofusers/signin。这次在 Yii 调试器中也不例外。

a=另请注意,我曾尝试使用 gii 和 Model 的扩展类创建模型。

似乎没有任何效果。 请帮帮我。我被困住了,无法继续工作。

谢谢:)

【问题讨论】:

  • 是否需要从高级模板开始?强烈建议从基本的开始,更容易设置和更容易学习。然后,当您的应用程序几乎完成时,将您的模型、控制器和组件移动到高级结构将是复制/过去和一些额外配置的问题,到目前为止您将了解它们的需求。
  • 不是。 proj 并不小,因为 advanced 拥有后端/前端/common 的所有目录结构,并且 asi 计划创建 REST API,因此它是使用高级模板的理想选择。还没有尝试过基本的。会这样做。但是,如果有人已经有这个问题,请让我知道它的解决方案。谢谢!
  • 嗯,我的意思是,在进一步的步骤中将您的文件从基本模板移动到高级模板并不难。如果您考虑使用基本款,那么this link may help you。这就是我如何重组基本模板以在 api 文件夹中实现 REST API,保持我的 web 文件夹不变,每个都有自己的 controllersconfigs 和两者共享相同的应用模型
  • 那我一定试试。谢谢萨利姆:)
  • 嗨,Salem,在使用基本模板时,我也看到 404 错误。是否与 urlManager 相关。例如:MyListUsersController 我已经点击了您分享的链接。我的 urlManager 说这个 'urlManager' => ['enablePrettyUrl' => true, 'enableStrictParsing' => true, 'showScriptName' => false,'rules' => [['class' => 'yii\rest\UrlRule ', 'controller' => 'v1/MyListUser'], 'POST api/web/v1/s' => '/create',

标签: routing namespaces yii2 yii2-advanced-app


【解决方案1】:
Yii 2.0 中的

404 错误通常来自错误的 urlManager 配置或 Server 配置。

在创建 api 模块之前,请确保您的 REST 应用在遵循 the official docs 之后可以正常工作。如果不是,则可能是服务器配置问题。

为了让 REST 工作,pretty urls 必须通过配置 .htaccess 文件(如果使用 apache 服务器)来启用,如下所示:

Options +FollowSymLinks
IndexIgnore */*

RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

那你可以去restructuring your app

这是一个尚未完成,而是一个 working repo,您将在其中找到 the configs 我用于 api 文件夹和 onces 我用于 web 文件夹 + 两个 .htaccess 文件在这两个文件夹中。

希望对你有帮助。

【讨论】:

  • 我正在尝试。你能告诉我是否有必要运行“官方文档”中提到的 curl 命令。如果是这样,我可以检查一下。我正在使用 Windows 操作系统。我可以看到那里有一个 $ 符号。这是检查其余应用程序是否有效的唯一方法吗?请对 REST yii 概念完全陌生。
  • 不,curl 命令只是测试 REST 服务的不同方法之一。您可以从导航器直接转到链接http://localhost/users或任何您的项目路径)。您应该看到从 DB 中检索到的数据作为 XML 输出。如果你到达那里你很好,你可以开始重组你的应用程序。如果没有,请检查您的服务器配置 (.htaccess)。请记住为复数添加s(例如,如果您的型号名称是car,那么您的网址应该类似于http://[path_to_project]/carshttp://[path_to_project]/web/cars(取决于您的.htaccess 文件))
  • 嗨 Salem :) 测试过.. YO!!基本 yii 工作正常.. 显然是因为 'enableStrictParsing' => true,将其更改为 false 并且在设置 rewrite_module 并在 web Rest 中添加 .htaccess 之后现在实际上正在工作!它现在是 API 模块的开始。赞一个!
  • 太棒了!如果您现在需要使用 JSON 输出而不是 XML 来测试您的数据并且不想使用 curl,那么可以在测试 REST 时使用像 postman 这样的很棒的导航器扩展。
  • 当然。我已经在 Postman 中测试过了。它返回 json 数据。但似乎在 yii 中设置 \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;或 CJSON::encode()
猜你喜欢
  • 2017-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-03
相关资源
最近更新 更多