Проблема заключается в том, что параметры сохраняются в родной PHP массива а и используется «на лету» шаблонами, DoctrineORM пачке, и т.д. ... так что не существует простой способ найти исчерпывающий список всех из них.
Однако, я нашел решение перечислить почти все варианты ListMapper (некоторые из DatagridMapper, но это действительно трудно differenciate их).
Вот они:
_sort_order
admin_code
ajax_hidden
association_mapping
code
editable
field_mapping
field_name
field_options
field_type
format
global_search
header_class
header_style
identifier
label
mapping_type
name
operator_options
operator_type
options
parameters
parent_association_mappings
route
route.name
route.parameters
row_align
sort_field_mapping
sort_parent_association_mappings
sortable
timezone
translation_domain
virtual_field
Чтобы получить этот список, у меня была идея сделать функцию SonataAdminBundle \ Admin \ BaseFieldDescription :: getOptions() возвращает пользовательский объект массива, что журналы каждый звонок до isset, unset, геттеры и сеттеры (с оператором скобок). Я также регистрирую SonataAdminBundle \ Admin \ BaseFieldDescription :: getOption ($ name, $ default = null) звонки.
Код связанные:
TestBundle \ ArrayTest
namespace TestBundle;
class ArrayTest implements \ArrayAccess
{
private $container = array();
private $previousOffset;
public function __construct($array, $previousOffset = null) {
$this->container = $array;
$this->previousOffset = $previousOffset;
}
public function offsetSet($offset, $value) {
if (is_null($offset)) {
$this->container[] = $value;
} else {
$this->dump($offset);
$this->container[$offset] = $value;
}
}
public function offsetExists($offset) {
$this->dump($offset);
return isset($this->container[$offset]);
}
public function offsetUnset($offset) {
$this->dump($offset);
unset($this->container[$offset]);
}
public function offsetGet($offset) {
$this->dump($offset);
if (isset($this->container[$offset])) {
if (is_array($this->container[$offset])) {
$newOffset = ($this->previousOffset ?: '').$offset.'.';
if ($newOffset === 'route.parameter.') { // because of Sonata\AdminBundle\Admin\AbstractAdmin::generateObjectUrl()
return $this->container[$offset];
}
return new ArrayTest($this->container[$offset], $newOffset);
}
return $this->container[$offset];
}
return null;
}
private function dump($offset)
{
$offset = ($this->previousOffset ?: '').$offset;
file_put_contents("/tmp/toto.txt", $offset."\n", FILE_APPEND);
}
}
SonataAdminBundle \ Admin \ BaseFieldDescription :: getOption ($ имя, $ умолчанию = NULL)
public function getOption($name, $default = null)
{
file_put_contents("/tmp/toto.txt", $name."\n", FILE_APPEND);
return isset($this->options[$name]) ? $this->options[$name] : $default;
}
SonataAdminBundle \ Admin \ BaseFieldDescription :: getOptions()
прототип новой функции в: getOptions ($ fakeArray = TRUE)
public function getOptions($fakeArray = true)
{
if ($fakeArray) {
return new \TestBundle\ArrayTest($this->options);
}
return $this->options;
}
соната \ DoctrineORMAdminBundle \ Builder \ DatagridBuilder :: AddFilter (DatagridInterface $ datagrid, $ type, FieldDescriptionInterface $ fieldDescription, AdminInterface $ admin)
Линия 129:
$filter = $this->filterFactory->create($fieldDescription->getName(), $type, $fieldDescription->getOptions());
в
$filter = $this->filterFactory->create($fieldDescription->getName(), $type, $fieldDescription->getOptions(false));
Затем отобразить список на сонатной администратора, и запустить cat /tmp/toto.txt | sort -u
, чтобы получить список выше.
Чтобы получить этот список параметров, я отобразил список администраторов SonataUserBundle. Вы можете найти другие параметры, отображающие другой список администраторов (например, для других шаблонов).
N.B.: Я побежал это на чистую установку Symfony 2.8.11, SonataAdminBundle 3.8.0, SonataDoctrineORMAdminBundle 3.1.0 и SonataUserBundle 3.0.1.
http://symfony.com/doc/current/bundles/SonataAdminBundle/reference/action_list.html#options – yceruto
ОК, это было легко. Как насчет третьего аргумента 'FormMapper-> add()'? Как узнать, что я могу использовать f.e. '' read_only '=> true'.Как я случайно нашел это где-то, но не в документации. – user6827096
'DatagridMapper-> add()' http://symfony.com/doc/current/bundles/SonataAdminBundle/reference/action_list.html#filters – yceruto