CRUD生成的控制器及其操作不会被称为yii2 advanced

时间:2015-05-12 13:16:06

标签: php yii2 yii2-advanced-app

实际上在我尝试通过r=kandyusers访问时创建控制器后,它会抛出404错误,但它与r=site一起工作正常 我要指定的一个是在我的crud生成器中有视图路径不知道为什么。但是,正如我在youtube教程中看到的那样,没有这样的元素。

screen shot of crud generator

3 个答案:

答案 0 :(得分:1)

您只需尝试kandy-users而不是kandyusers

了解详情:Controller class naming

  

控制器类名称可以根据控制器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