是行为的相关配置访问?在这个特定的情况下,行为被附加到表格中。我想知道是否有可能以某种方式获取字段属性,稍后在代码中?从代码中获取行为相关的配置
<?php
class MyRandomTable extends Table
{
public function initialize(array $config)
{
parent::initialize($config);
...
// Add Cipher behavior
$this->addBehavior('CipherBehavior.Cipher', [
'fields' => [
'original' => 'string',
'changed' => 'string',
]
]);
}
...
}
?>
如果我加载表和转储的内容,我没有看到的行为列出:
$table = TableRegistry::get('MyRandomTable');
var_dump($table);
部分转储内容:
protected '_behaviors' =>
object(Cake\ORM\BehaviorRegistry)[170]
protected '_table' =>
&object(Cake\ORM\Table)[172]
protected '_methodMap' =>
array (size=0)
empty
protected '_finderMap' =>
array (size=0)
empty
protected '_loaded' =>
array (size=0)
empty
protected '_eventManager' =>
object(Cake\Event\EventManager)[165]
protected '_listeners' =>
array (size=0)
...
protected '_isGlobal' => boolean false
protected '_eventList' => null
protected '_trackEvents' => boolean false
protected '_eventClass' => string '\Cake\Event\Event' (length=17)
我想怎么办在控制器中,是获取字段并将其传递给视图。
编辑#1
使用CakePHP v3.3.16
编辑#2
我看到行为信息,我装表时已经错过了插件前缀:
$table = TableRegistry::get('PluginName.MyRandomTable');
显示:
protected '_behaviors' =>
object(Cake\ORM\BehaviorRegistry)[143]
protected '_table' =>
&object(PluginName\Model\Table\MyRandomTable)[94]
protected '_methodMap' =>
array (size=4)
'timestamp' =>
array (size=2)
...
'touch' =>
array (size=2)
...
'encrypt' =>
array (size=2)
...
'decrypt' =>
array (size=2)
...
protected '_finderMap' =>
array (size=0)
empty
protected '_loaded' =>
array (size=2)
'Timestamp' =>
object(Cake\ORM\Behavior\TimestampBehavior)[181]
...
'Cipher' =>
object(CipherBehavior\Model\Behavior\CipherBehavior)[192]
...
protected '_eventManager' =>
object(Cake\Event\EventManager)[175]
protected '_listeners' =>
array (size=4)
...
protected '_isGlobal' => boolean false
protected '_eventList' => null
protected '_trackEvents' => boolean false
protected '_eventClass' => string '\Cake\Event\Event' (length=17)
我的表有一个命名空间,我只是省略它来保持我以为相关部分。 – TekiusFanatikus
你部分在那里...因为我正在加载插件表,所以我需要在插件名称前加前缀。我现在看到一些行为元数据/信息。 – TekiusFanatikus
这有效......在你的命令中有一个错字,它是“行为”而不是“行为”:) – TekiusFanatikus