我成功使用了Yii2 Model& CRUD生成器为我的Web应用程序获取一些框架代码文件。特别是,CRUD Generator声称已成功将其视图文件创建为:
<yii_root>/basic/views/<my_view_name>/*.php
我将“查看路径”字段留空了。
但是,请浏览:
https://<my_site_FQDN>/basic/web/index.php?r=<my_view_name>/index
吐出“未找到(#404)”错误,我无法在Yii2调试日志中找到任何有用的信息。
欢迎任何有关此事的想法。
安东尼奥
答案 0 :(得分:5)
<my_view_name>
这是一种看待这种情况的可怕方式。阅读MVC。
您正在创建控制器,路由到控制器而不是视图。停止查看是否存在视图...查看控制器是否在那里。您永远不会与视图交互,您总是使用控制器。那么,你的控制器在那里吗?你确定你创造了吗?
还有什么是控制器名称?如果你有像ProductCategory这样的东西,那么正确的路线是
https://<my_site_FQDN>/basic/web/index.php?r=product-category/index
而不是
https://<my_site_FQDN>/basic/web/index.php?r=ProductCategory/index
修改强>
好的,我看到你的问题,停止将文件夹放在其他文件夹下等等。您创建了错误的CRUD。您的控制器必须直接位于不在控制器/书目下的控制器下,模型也是如此。删除文件并使用CRUD重新开始,因为您的命名空间可能也是错误的。
答案 1 :(得分:5)
就我而言,Yii2用gii CRUD自动生成器写下以下内容。
namespace app\Controllers;
注意控制器的大写'C'。这会导致404错误。 它应该是:
namespace app\controllers
这解决了我的404错误。
答案 2 :(得分:0)
我在Yii2(高级模板)中发现生成的控制器具有:
namespace app\controllers;
我必须将其更改为:
namespace frontend\controllers;
答案 3 :(得分:0)
我通过大写控制器名称的首字母来固定它。 控制器名称应以大写字母开头。 如果使用小写字母,Controller生成器将不会引发任何错误,但在浏览器中将不会找到(404)错误。
这引发了错误:
app\controllers\testController
这有效:
app\controllers\TestController
答案 4 :(得分:-2)
非常简单,更改名称空间,创建CRUD时请小心。 更改命名空间app \ controllers;命名空间backend \ controllers;