The CodeboxFrame
widget displays and optionally executes PHP and Yii2 code snippets within HumHub modules. It provides a secure, panel-based interface for code demonstration and execution.
<?php
use humhub\modules\codebox\widgets\CodeboxFrame;
<?php
echo CodeboxFrame::widget([
'entries' => [
[
'title' => 'Sample HTML Code',
'htmlCode' => '<div class="alert alert-info">Hello World!</div>',
'codeType' => 'html',
'sortOrder' => 1
]
]
]);
<?php
echo CodeboxFrame::widget([
'entries' => [
[
'title' => 'HTML Content',
'htmlCode' => '<div class="well">Welcome message</div>',
'codeType' => 'html',
'sortOrder' => 1
],
[
'title' => 'PHP Example',
'htmlCode' => 'echo "Current time: " . date("Y-m-d H:i:s");',
'codeType' => 'php',
'sortOrder' => 2
],
[
'title' => 'Yii2 Framework Code',
'htmlCode' => '
echo humhub\widgets\Button::primary("Click Me")->icon("fa-thumbs-up");',
'codeType' => 'yii2',
'sortOrder' => 3
]
],
'showPanelMenu' => true
]);
Property | Type | Default | Description |
---|---|---|---|
entries | array | [] | Array of code entries to display |
showPanelMenu | boolean | true | Show/hide panel menu |
enablePhpExecution | boolean | false | Enable PHP code execution |
Field | Type | Required | Description |
---|---|---|---|
title | string | Yes | Display title for the code block |
htmlCode | string | Yes | The actual code content |
codeType | string | Yes | Code type: html , php , yii2 |
sortOrder | integer | Yes | Display order (lower numbers first) |
html
)Renders HTML directly with nonce support for CSP compliance.
[
'title' => 'HTML Content',
'htmlCode' => '<div class="alert alert-success">Success message</div>',
'codeType' => 'html',
'sortOrder' => 1
]
php
)[
'title' => 'PHP Example',
'htmlCode' => 'echo "Server time: " . date("Y-m-d H:i:s");',
'codeType' => 'php',
'sortOrder' => 1
]
yii2
)Similar to PHP but with Yii2 context variables: $app
, $user
, $request
, $response
[
'title' => 'Yii2 User Info',
'htmlCode' => '
echo humhub\modules\user\widgets\UserListBox::widget([
"users" => [$user->identity],
"showUserName" => true
]);',
'codeType' => 'yii2',
'sortOrder' => 1
]
echo CodeboxFrame::widget([
'enablePhpExecution' => true, // CAUTION: Use only in trusted environments
'entries' => [/* your PHP entries */]
]);
These functions are blocked for security:
file_get_contents
, file_put_contents
, fopen
, unlink
exec
, system
, shell_exec
, passthru
eval
include
, require
, include_once
, require_once
<?php
use humhub\modules\codebox\widgets\CodeboxFrame;
?>
<div class="container">
<?= CodeboxFrame::widget([
'entries' => [
[
'title' => 'HTML Welcome Message',
'htmlCode' => '<div class="alert alert-info">Welcome to our module!</div>',
'codeType' => 'html',
'sortOrder' => 1
],
[
'title' => 'PHP Server Info',
'htmlCode' => 'echo "PHP Version: " . phpversion() . "<br>Memory Usage: " . memory_get_usage(true);',
'codeType' => 'php',
'sortOrder' => 2
],
[
'title' => 'Yii2 Application Info',
'htmlCode' => '
$form = humhub\widgets\ActiveForm::begin();
echo yii\helpers\Html::label("Sample Form", null, ["class" => "control-label"]);
echo yii\helpers\Html::textInput("sample", "", ["class" => "form-control", "placeholder" => "Enter text"]);
humhub\widgets\ActiveForm::end();',
'codeType' => 'yii2',
'sortOrder' => 3
]
]
]) ?>
</div>
"Security: PHP code contains restricted functions"
: Code uses blocked functions"PHP Error:"
/ "PHP Parse Error:"
: Syntax error in PHP codesortOrder
enablePhpExecution => true
enablePhpExecution => false
in production unless necessaryHtml::encode()
for user-provided content