yii2 appasset.php,Yii2 创建一个新的应用

Yii2中,前(frontend)、后(backend)台各为一个独立的应用

如何创建第三个独立应用?(下面举例新的应用: 名字 newapp)

1、 根目录下Copy一份backend 应用改名为newapp

2、 打开environments/index.php 增加其初始化工作。(开发环境和生产环境里面配置如下)

return [

'Development' => [

'path' => 'dev',

'setWritable' => [

'backend/runtime',

'backend/web/assets',

'frontend/runtime',

'frontend/web/assets',

'newapp/runtime', //<<

'newapp/web/assets', //<<

],

'setExecutable' => [

'yii',

],

'setCookieValidationKey' => [

'backend/config/main-local.php',

'frontend/config/main-local.php',

'newapp/config/main-local.php', //<<

],

],

'Production' => [

'path' => 'prod',

'setWritable' => [

'backend/runtime',

'backend/web/assets',

'frontend/runtime',

'frontend/web/assets',

'newapp/runtime', //<<

'newapp/web/assets',//<<

],

'setExecutable' => [

'yii',

],

'setCookieValidationKey' => [

'backend/config/main-local.php',

'frontend/config/main-local.php',

'newapp/config/main-local.php',//<<

],

],

];

3、根目录 environments/ 中dev/和prod/下各copy一份backend命名为newapp即可

4、common/config/bootstrap.php 里添加

Yii::setAlias('@newapp',dirname(dirname(__DIR__)) . '/newapp');

5、将新的应用newapp文件夹里所有文件,有backend关健字的地方全改成newapp,才能使用这个独立应用.

文件夹Yii目录/newapp/下

newapp/codeception.yml;

assets/AppAsset.php;

config/main.php;

config/test.php;

controllers/SiteController.php;

view/layouts.php;

----分割线,以下是编写应用部分----------------------------

6、下面开始创建Hello~

一、 创建动作

为了 “Hello”,需要创建一个 say , 从请求中接收 message 参数并显示给最终用户。 如果请求没有提供 message 参数,操作将显示默认参数 “Hello”。

操作必须声明在中。为了简单起见, 你可以直接在 SiteController 控制器里声明 say 操作。 这个控制器是由文件 controllers/SiteController.php 定义的。以下是一个操作的声明:

namespace app\controllers;

use yii\web\Controller;

class SiteController extends Controller

{

// ...现存的代码...

//这里我们创建一个新的action

public function actionSay($message = 'Hello')

{

return $this->render('say', ['message' => $message]);

}

}

在上述 SiteController 代码中,say 操作被定义为 actionSay 方法。 Yii 使用 action 前缀区分普通方法和操作。 action 前缀后面的名称被映射为操作的 ID。

涉及到给操作命名时,你应该理解 Yii 如何处理操作 ID。 操作 ID 总是被以小写处理,如果一个操作 ID 由多个单词组成, 单词之间将由连字符连接(如 create-comment)。 操作 ID 映射为方法名时移除了连字符,将每个单词首字母大写,并加上 action 前缀。 例子:操作 ID create-comment 相当于方法名 actionCreateComment。

上述代码中的操作方法接受一个参数 $message, 它的默认值是 “Hello”(就像你设置 PHP 中其它函数或方法的默认值一样)。 当应用接收到请求并确定由 say 操作来响应请求时,应用将从请求的参数中寻找对应值传入进来。 换句话说,如果请求包含一个 message 参数, 它的值是 “Goodbye”, 操作方法中的 $message 变量也将被填充为 “Goodbye”。

在操作方法中,render() 被用来渲染一个 名为 say 的视图文件。 message 参数也被传入视图,这样就可以在里面使用。操作方法会返回渲染结果。 结果会被应用接收并显示给最终用户的浏览器(作为整页 HTML 的一部分)。

二、 创建视图

视图是你用来生成响应内容的脚本。为了说 “Hello”, 你需要创建一个 say 视图,以便显示从操作方法中传来的 message 参数。创建文件 views/site/say.php 内容如下

use yii\helpers\Html;

?>

= Html::encode($message) ?>

say 视图应该存为 views/site/say.php 文件。当一个操作中调用了 render() 方法时,

它将会按 views/控制器ID/视图名.php 路径加载 PHP 文件。

注意以上代码,message 参数在输出之前被 HTML-encoded 方法处理过。 这很有必要,当参数来自于最终用户时,参数中可能隐含的恶意 JavaScript 代码会导致 跨站脚本(XSS)攻击。

当然了,你大概会在 say 视图里放入更多内容。内容可以由 HTML 标签,纯文本, 甚至 PHP 语句组成。实际上 say 视图就是一个由 render() 执行的 PHP 脚本。 视图脚本输出的内容将会作为响应结果返回给应用。应用将依次输出结果给最终用户.

三、 试运行

这个 URL 将会输出包含 “Hello World” 的页面,页面和应用里的其它页面使用同样的头部和尾部。

如果你省略 URL 中的 message 参数,将会看到页面只显示 “Hello”。 这是因为 message 被作为一个参数传给 actionSay() 方法,当省略它时,参数将使用默认的 “Hello” 代替。

信息: 新页面和其它页面使用同样的头部和尾部是因为 render() 方法会自动把 say 视图执行的结果嵌入称为布局的文件中, 本例中是 views/layouts/main.php。

上面 URL 中的参数 r 需要更多解释。 它代表路由,是整个应用级的, 指向特定操作的独立 ID。路由格式是 控制器 ID/操作 ID。应用接受请求的时候会检查参数, 使用控制器 ID 去确定哪个控制器应该被用来处理请求。 然后相应控制器将使用操作 ID 去确定哪个操作方法将被用来做具体工作。 上述例子中,路由 site/say 将被解析至 SiteController 控制器和其中的 say 操作。 因此 SiteController::actionSay() 方法将被调用处理请求。

信息: 与操作一样,一个应用中控制器同样有唯一的 ID。 控制器 ID 和操作 ID 使用同样的命名规则。 控制器的类名源自于控制器 ID, 移除了连字符,每个单词首字母大写,并加上 Controller 后缀。 例子:控制器 ID post-comment 相当于控制器类名 PostCommentController。

可能出错:

1: Forbidden (#403) (其他错误原因慢慢补充)

403 Forbidden 资源不可用。服务器理解客户的请求,但拒绝处理它。

1).访问的文档权限不够。要755以上权限。解决方法:用命令chmod 755 -R yii/newapp 或其他相应目录。

2).SELinux或防火墙的原因。解决方法:先关闭SELinux和让防火墙通过WWW服务。

3).虚拟主机配置错误

参考链接https://www.cnblogs.com/wajika/p/6481167.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值