cakephp 3でマルチ選択ドロップダウンのカスタムデータ型を作成しようとしています。私は自分のフォームでmultiple => true
コントロールを持っている:Cakephp 3:カスタムデータ型が正しく動作しない
- PHP
- HTML
- CSS
私はこのフォームを送信すると、私は配列(0 => PHP, 1 => HTML
)としてそのコントロールの値を取得し、それは結構です、今、私は文字列形式でこれらの値を保存したいですこのPHP,HTML
のようにして、再び配列として取り戻します。
この入力の保存は正常ですが、データはstring
の形式でのみ取得されます。このために私はこのanswerを踏襲し、カスタムデータ型を作成しました:
class MultiSelectType extends Type
{
public function toPHP($value, Driver $driver)
{
if (!$value) {
return null;
}
return explode(',', $value);
}
public function marshal($value)
{
return explode(',', $value);
}
public function toDatabase($value, Driver $driver)
{
return implode(',', $value);
}
public function toStatement($value, Driver $driver)
{
if ($value === null) {
return PDO::PARAM_NULL;
}
return PDO::PARAM_STR;
}
}
どのように私は自分のフォームが自動的にみとめ選択ボックスから値を選択するように戻ってarray
を取得するには、このコードに
を変更します。
を取得して、その値を文字列として表示したいときはいつでも戻ってください。
まず...なぜ?適切な '1:n'、あるいはおそらくもっと良い' n:m'関連の関連付けを使うのはどうですか? – ndm
@ndmそのデータは、表示モードで文字列として表示するだけでは意味がありません。そのため、私は正規化しませんでした –
しかし、これをやろうとしていたクリーナーコードのために... –