我想在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
回到让自己的形式将从多发选择框会自动选择值。得到
string
只要我想显示该值为一个字符串。
首先,为什么?为什么不使用正确的'1:n',或者更好的'n:m'相关联? – ndm
@ndm该数据没有太多的意义,只是在视图模式下显示它作为一个字符串,这就是为什么我没有正常化它 –
但为了更干净的代码,我试图做到这一点... –