こんにちは、10 月の CMS ヘルプ/サポートhttp://octobercms.com/index.php/forum/post/dropdown-shows-its-value-than-key-name-in-list-controllerの助けを借りて答えを見つけました
。
そしてlaravelのいくつかの概念を参照しました。
モデル クラス メソッド
public static function getSampleOptions()
{
return[
'1'=>'Mobile App',
'2'=>'Web App'
];
}
Columns.Yaml ファイル
sample:
label: Sample Column
type: dropdown
再びモデルに戻り、属性オブジェクトを宣言し、フィールド名を空の値を持つキーとして含めます
public $attributes = ['sample'=>''];
get field_name Attribute() 関数を定義して、列の適切なキーに関連付けられた値を設定します
public function getSampleAttribute()
{
$result = $this->attributes['sample'];
$options = $this->getSampleOptions();
foreach($options as $key=>$value)
{
if($key == $result)
{
return $value;
}
}
}
更新 レコードの編集中に問題を修正するソリューションは簡単です。パーシャルを作成し、フィールドを変更します。yaml
_sample_options.htm (部分) // ファイル名は_(アンダースコア)で始まる必要があります
<?php
$fieldOptions = $model->getSampleOptions();
$sample = $model->attributes['sample'];
?>
<select id="<?= $field->getId() ?>" name="<?= $field->getName() ?>" class="form-control custom-select" <?= $field->getAttributes() ?>>
<?php foreach($fieldOptions as $key=>$label)
{
?>
<option value="<?= $key ?>" <?php echo ($sample == $key)?"selected":''; ?>><?= $label ?></option>
<?php
} ?>
</select>
ここで、$modelと$fieldは、目的のモデルのメソッドとプロパティにアクセスするために使用される部分変数です。ドキュメント: https://octobercms.com/docs/backend/forms#field-partial
Fields.Yaml ファイル
sample:
label: Sample Field
type: partial
path: $/october/demo/controllers/sample/_sample_options.htm //path where the partial is located in the controller view