实际上在我尝试通过r=kandyusers
访问时创建控制器后,它会抛出404错误,但它与r=site
一起工作正常
我要指定的一个是在我的crud生成器中有视图路径不知道为什么。但是,正如我在youtube教程中看到的那样,没有这样的元素。
答案 0 :(得分:1)
您只需尝试kandy-users
而不是kandyusers
控制器类名称可以根据控制器ID派生 以下规则:
- 将每个单词中由破折号分隔的第一个字母转换为大写。请注意,如果控制器ID包含斜杠,则仅限此规则 适用于ID中最后一个斜杠之后的部分。
- 删除破折号并用反斜杠替换任何正斜杠。
- 附加后缀Controller。
- 并添加控制器名称空间。
关于gii中的视图路径,您应该尝试使用@backend/views/kandy-users
答案 1 :(得分:0)
我在Yii2高级应用程序示例中尝试了Gii代码生成器,我看到它创建了“前端”区域中的所有文件。
它还会在文件夹前端/ web下创建视图,这与控制器调用视图的位置不同。
我建议您检查Gii的“预览”选项中显示的每个文件夹/文件路径,一旦到达所需的文件夹配置,请检查控制器搜索视图的位置。
也许您需要将这句话添加到您的crud控制器类中,以使Yii知道这里是所需的视图,例如在UserCrudController中我有文件夹crud /下的视图:
public function getViewPath()
{
return Yii::getAlias('@frontend/views/crud/User');
}
答案 2 :(得分:0)
我发现它很混乱所以我准备了一张备忘单。 我正在为每个表设置一个模块,所以我可以使用Gii CRUD作为管理员。 我正在使用Yii2高级主题并将模块放在后端。
请注意,控制器ID应为小写:
默认情况下,控制器ID应仅包含以下字符:小写英文字母,数字,下划线,连字符和正斜杠。例如,文章和后评论都是有效的控制器ID,而文章?,PostComment,admin \ post则不是。
表格中有一个单词,如帖子(最好将其复制为Gii)很简单。
对于像post_topic这样的单词更多的表,至少有两种方法:
1 - 使用一个词,如posttopic(全部小写)
2 - 使用与表名post_topic相同的模块名称。请注意,当Gii告诉您输入配置文件模块部分'post_topic'时,您应该使用'post-topic'。此选项不整齐(对于模块文件夹使用post_topic,对于视图文件夹使用post-topic,对于文件使用PostTopic.php)。
我很高兴听到有人有更好的解决方案,因为这一点没有详细记录,所有的例子都使用了一个词。
所以这是我的设置(显示多字词表的选项2)
for one word tables:
module generator
----------------
module class: backend\modules\posts\Module
module id: posts
update in common\config\main.php
model generator
---------------
table name: posts
model class: Posts
namespace: backend\modules\posts\models
Enable I18n: checked. Message category: app
CRUD generator
--------------
Model class: backend\modules\posts\models\Posts
Search model class: backend\modules\posts\models\PostsSearch
Controller class: backend\modules\posts\controllers\PostsController
View path: @backend/modules/posts/views/posts
Enable I18n: checked. Message category: app
Enable pjax: checked
need to change Users::className() in the models\Posts.php
\amnah\yii2\user\models\User::className()
Access the crud page: www.example.com/backend/web/posts/posts
or for two or more words tables:
module generator
----------------
module class: backend\modules\post_topic\Module
module id: post_topic
Gii say to use: 'post_topic' => ['class' => 'backend\modules\post_topic\Module',],
But we should use: 'post-topic' => ['class' => 'backend\modules\post_topic\Module',],
model generator
---------------
table name: post_topic
model class: PostTopic
namespace: backend\modules\post_topic\models
Enable I18n: checked. category: app
CRUD generator
--------------
Model class: backend\modules\post_topic\models\PostTopic
Search model class: backend\modules\post_topic\models\PostTopicSearch
Controller class: backend\modules\post_topic\controllers\PostTopicController
View path: @backend/modules/post_topic/views/post-topic
Enable I18n: checked. category: app
Enable pjax: checked
need to change Users::className() in the models\PostTopic.php
\amnah\yii2\user\models\User::className()
Access the crud page: www.example.com/backend/web/post-topic/post-topic