Если Вы хотите создать свой тип свойств необходимо выполнить следующие действия:
В директории с темой (рекомендуемая директория application/web/theme
) создать следующую структуру:
properties/
handlers/
...
custom/
views/
backend-edit.php // Представление свойства при редактировании в административной панели
backend-render.php // Представление свойства в административной панели
frontend-edit.php // Заполнение форм на внешней части сайта
frontend-render.php // Представление свойства на внешней части сайта
CustomProperty.php // Класс обработчик свойства
...
Простейший вид класса обработчика:
namespace app\web\theme\properties\handlers\custom;
use app;
use app\properties\handlers\Handler;
use yii;
class CustomProperty extends Handler
{
}
Простейший вид представлений:
echo $form->field($model, $property_key.'[0]');
use app\models\Property;
use kartik\helpers\Html;
if (count($values->values) == 0) {
return;
}
$property = Property::findById($property_id);
echo Html::tag('dt', $property->name);
foreach($values->values as $val) {
if (isset($val['value'])) {
echo Html::tag('dd', $val['value']);
}
}
echo $form->field($model, $property_key);
use app\models\Property;
use kartik\helpers\Html;
if (count($values->values) == 0) {
return;
}
$property = Property::findById($property_id);
$result = "";
foreach($values->values as $val) {
if (isset($val['value'])) {
if (!empty(trim($val['value']))) {
$result.= Html::tag('dd', $val['value']);
}
}
}
$result = trim($result);
if (!empty($result)) {
echo '<dl>' . Html::tag('dt', $property->name) . $result . "</dl>\n\n";
}
Создадим миграцию и применим ее:
yii migrate/create Custom_Property --migrationPath=@app/web/theme/migrations
.$this->insert(\app\models\PropertyHandler::tableName(), [
'name' => 'Custom',
'frontend_render_view' => 'frontend-render',
'frontend_edit_view' => 'frontend-edit',
'backend_render_view' => 'backend-render',
'backend_edit_view' => 'backend-edit',
'handler_class_name' => 'app\web\theme\properties\handlers\custom\CustomProperty',
]);
yii migrate --migrationPath=@app/web/theme/migrations