您好,登錄后才能下訂單哦!
yii2擴展和自定義函數組件及模塊是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
自定義輔助函數
入口文件加載
目錄下創建一個helpers目錄下創建functions.php 文件
<?php
if (! function_exists('hello')) {
function hello(){
echo 'hello word';
}
}
修改項目入口文件index.php
新增如下代碼:
require(__DIR__ . '/../helpers/functions.php');
composer中設置加載(推薦)
在 composer.json 文件里面添加如下代碼:
"autoload": {
"files": [
"common/components/functions.php"
]
},
添加完之后,在common/components下添加文件functions.php,項目根目錄下執行 composer update
ok!
自定義component 組件
在app\components下新建NewComponent.php
namespace app\components;
use Yii;
use yii\base\Component;
use yii\base\InvalidConfigException;
class NewComponent extends Component
{
public function hello()
{
echo "hello world";
}
}
main.php配置文件中
'components' => [
'testcomponent' => [
'class' => 'app\components\MyComponent',
],
]
下面就可以愉快的使用 組件了是不是很簡單 !
Yii::$app->testcomponent->hello();
自定義Modules 模塊
以下參考yii2.0 權威指南
新建一個如下目錄
forum/
Module.php 模塊類文件
controllers/ 包含控制器類文件
DefaultController.php default 控制器類文件
models/ 包含模型類文件
views/ 包含控制器視圖文件和布局文件
layouts/ 包含布局文件
default/ 包含DefaultController控制器視圖文件
index.php index視圖文件
Module.php 代碼如下
namespace app\modules\forum;
class Module extends \yii\base\Module
{
public function init()
{
parent::init();
$this->params['foo'] = 'bar';
// ... 其他初始化代碼 ...
}
}
如果 init() 方法包含很多初始化模塊屬性代碼, 可將他們保存在配置 并在init()中使用以下代碼加載:
public function init()
{
parent::init();
// 從config.php加載配置來初始化模塊
\Yii::configure($this, require(__DIR__ . '/config.php'));
}
config.php配置文件可能包含以下內容,類似應用主體配置.
<?php
return [
'components' => [
// list of component configurations
],
'params' => [
// list of parameters
],
];
使用模塊
要在應用中使用模塊,只需要將模塊加入到應用主體配置的yii\base\Application::modules屬性的列表中, 如下代碼的應用主體配置 使用 forum 模塊:
[
'modules' => [
'forum' => [
'class' => 'app\modules\forum\Module',
// ... 模塊其他配置 ...
],
],
]
訪問路由
forum/post/index 代表模塊中 post 控制器的 index 操作
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。