Yii2怎么在Linux下用命令行创建控制器_gii命令行生成代码【操作】

酷宇同学_3914

酷宇同学_3914

2026-03-29

345人浏览

原创

yii controller/create 是 yii2 命令行下唯一可用的控制器生成命令,用于生成空控制器骨架,不依赖 gii,需手动补 action、视图及路由配置。

yii2怎么在linux下用命令行创建控制器_gii命令行生成代码【操作】

yii gii/controller 命令在 Linux 下根本不能直接用

因为 gii 是 Yii2 的 Web 界面工具,官方没提供命令行版的 gii/controller。你敲 ./yii gii/controller 肯定报错:Unknown command "gii/controller" —— 这不是权限或路径问题,是功能压根不存在。

真正能用的命令行代码生成器是 yii controller/create(注意不是 gii),它属于 Yii2 内置的 console 命令,不依赖 Gii 扩展,也不需要 Web 服务运行。

  • 必须确保 console/config/main.php 中已启用 'controller' => 'yiiconsolecontrollersControllerController'(默认已配好)
  • 项目根目录下执行,不是在 console/ 子目录里
  • 控制器名用驼峰(如 UserProfile),别写成 user-profile 或 user_profile,否则生成的类名和文件名会出错

用 yii controller/create 创建控制器的正确姿势

这个命令只生成空控制器骨架,不带 action、不建视图、不配路由 —— 和 Gii 的“一键全包”完全不同,得自己补。

执行示例:./yii controller/create user-profile

Yii Framework 2.0.51
Yii Framework 2.0.51

Yii Framework 2.0.51 官方 Basic 应用模板,适合旧项目兼容、升级验证和开发测试。

下载
  • 命令末尾的 user-profile 会被转成 UserProfileController 类名,文件存到 controllers/UserProfileController.php
  • 如果加 --namespace=app\controllers\v2,会生成命名空间并创建对应子目录(需手动建 controllers/v2/)
  • 不支持批量生成多个控制器;想建 PostController 和 CommentController,得分别跑两次命令
  • 生成后记得检查 controllers/ 目录权限:Linux 下有时因 umask 导致新文件不可读,Web 服务会 500

为什么不用 Gii 命令行?它真没实现

有人翻过 Yii2 源码就知道:yiigii 扩展只注册了 Web 路由(/gii/*),所有逻辑都基于 yiiwebController,而 console 应用用的是 yiiconsoleController,两者基类不兼容。

强行把 Gii 模块挂到 console 配置里也没用 —— 它依赖 Request、Response、View 等 Web 组件,console 环境里一调就抛异常。

  • 社区有第三方脚本(如 yii2-gii-console),但维护停滞、不兼容 2.0.40+、无测试覆盖,线上项目别碰
  • 如果你真需要 Gii 的模板能力(比如自动生成 CRUD 视图),只能老实用浏览器打开 http://your-site/gii
  • 别试图改 vendor/yiisoft/yii2-gii 源码来“命令行化”,升级时会被覆盖,且 Gii 的表单交互逻辑不适合 CLI 场景

Linux 下执行失败的三个高频原因

不是命令写错,而是环境卡点。常见报错和解法:

  • Permission denied: ./yii → 给执行权限:chmod +x yii(别漏掉 +)
  • PHP Fatal error: Class 'Yii' not found → 当前目录不是 Yii2 项目根目录,或者 vendor/autoload.php 被误删
  • Exception 'yiiaseInvalidConfigException' with message 'Controller not found' → console/config/main.php 里 'controllerMap' 被手动删了或写错了 key,确认存在 'controller' => 'yiiconsolecontrollersControllerController'

复杂点在于:命令行生成的控制器默认不注册 URL 规则,user-profile/index 这种路由要自己在 config/web.php 里配 urlManager 规则,不然浏览器打不开 —— 这一步 Gii 会自动提示,而 console 命令完全不管。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

yii

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

989

5

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.25

2960

5

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

2024.01.03

3936

7

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

2025.12.06

306

9

console接口是干嘛的
console接口是干嘛的

console接口是一种用于在计算机命令行或浏览器开发工具中输出信息的工具,提供了一种简单的方式来记录和查看应用程序的输出结果和调试信息。本专题为大家提供console接口相关的各种文章、以及下载和课程。

2023.08.08

856

5

console.log是什么
console.log是什么

console.log 是 javascript 函数,用于在浏览器控制台中输出信息,便于调试和故障排除。想了解更多console.log的相关内容,可以阅读本专题下面的文章。

2024.05.29

6283

7

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.09

3523

4

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

2023.11.14

874

3

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

2024.03.12

6526

8

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Yii Framework 2.0 API 官方文档
Yii Framework 2.0 API 官方文档

共0课时 | 0人学习

Yii2.0框架开发实战视频教程
Yii2.0框架开发实战视频教程

共22课时 | 9.3万人学习