Добавление поля в таблицу modx_user_attributes
Здравствуйте. Добавил поле в таблицу modx_user_attributes, в core/schema/modx.mysql.schema.xml прописал все что надо, далее на сколько я понимаю необходимо запустить build.modx.php. При выполнении происходит ошибка. Видимо он не может найти файл в этой строчке:
P.S поле extended для хранения данных не подходит, т. к. нужно осуществлять выборку с помощью LIKE из этой таблицы, а в поле extended русские символы перекодируются в шляпу вида \u0411\u0426 \u0418\
require_once (dirname(dirname(dirname(dirname(__FILE__)))) . '/_build/build.properties.php');
т.к. в принципе у меня нет такой папки _build. Так вот вопрос, что это за файл и что делать дальше?P.S поле extended для хранения данных не подходит, т. к. нужно осуществлять выборку с помощью LIKE из этой таблицы, а в поле extended русские символы перекодируются в шляпу вида \u0411\u0426 \u0418\
Комментарии: 11
Какую-то ерунду сделал, очень плохо менять ядро.
Какая конечная цель? Что куда надо добавить?
Какая конечная цель? Что куда надо добавить?
Не совсем понимаю, почему таблицу с атрибутами пользователей вы считаете ядром. Это всего лишь предопределенная таблица с данными. К ней прилагаются предопределенные схема, модель и описания интерфейсов. Я не силен во внутренностях модикса, могу ошибаться, но, вроде как, ядро на общих условиях обрабатывает как предопределенные данные, так и данные плагинов. В описание интерфейса добавлять это поле не требуется. А чем плохим может обернуться дополнение модели (корректное дополнение) — я не понимаю.
Конечная цель: нужно поле в атрибутах пользователя, которое будет участвовать в большинстве запросов к таблице пользователей. Разумеется, запросы хочется формировать через xPDO.
Конечная цель: нужно поле в атрибутах пользователя, которое будет участвовать в большинстве запросов к таблице пользователей. Разумеется, запросы хочется формировать через xPDO.
там же есть дополнительные properties которые хранятся в JSON массиве, можно задействовать их
Дополнительное поле extended тем и не годится, что это JSON-массив. Добавляемой поле должно активно участвовать в запросах к БД.
В общем, поле, которое мне нужно было добавить «company». Для этого нужно было в core/model/modx/mysql/moduserprofile.map.inc.php добавить в массив
$xpdo_meta_map['modUserProfile']['field']
следующее: 'company' => '',
и в массив $xpdo_meta_map['modUserProfile']['fieldMeta']
следующее: 'company' =>
array (
'dbtype' => 'text',
'precision' => '100',
'phptype' => 'string',
'null' => true,
'default' => 'NULL'
),
Для добавления этого поля в интерфейс админки нужно подкорректировать файл /manager/assets/modext/widgets/security/modx.panel.user.js, добавив:{
id: 'modx-user-company'
,name: 'company'
,fieldLabel: 'Компания'
,xtype: 'textfield'
,width: 200
,maxLength: 100
}
, всем спасибо за участие.
И при следующем обновлении MODX это все затрется…
Наверняка не знаю, но мне кажется, обновляется только то, что изменилось и затрется только в том случае, если будет изменена модель и интерфейс (что мне представляется маловероятным). Не знаю, по какой логике действуют разработчики ModX, но я бы при обновлении плясал бы от схемы и, если есть изменения — дополнял бы схему и по ней пересобирал модель. С обновлением интерфейса, правда, от схемы точно не оттолкнешься. В любом случае, деваться некуда, т.к. требуется фильтрация по данному полю. При первом же обновлении можно будет проверить.
В MODX обновления файлов происходит распаковкой из архива ручками.
Поэтому если сам не проконтролируешь какие файлы перезаписывать из архива — все затрется.
А выход есть, можно, например, расширить класс пользователя и сделать связь со своей таблицей дополнительных аттрибутов.
Поэтому если сам не проконтролируешь какие файлы перезаписывать из архива — все затрется.
А выход есть, можно, например, расширить класс пользователя и сделать связь со своей таблицей дополнительных аттрибутов.
Если нужно всего нескока полей — то используй не используемые поля от modUser — например remote_Data или remote_Key — это самый простой вариант.
У меня схожая ситуация, только мне как раз нужен Extended т.к полей слишком много.
У меня схожая ситуация, только мне как раз нужен Extended т.к полей слишком много.
На мой взгляд правильней было делать связью «One to One»
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.