使用CRUD发生器时Yii2“找不到页面”

时间:2015-01-21 19:38:36

标签: crud yii2 scaffolding

我成功使用了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调试日志中找到任何有用的信息。

欢迎任何有关此事的想法。

安东尼奥

5 个答案:

答案 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;