MODX Revolution как бързо да получите стойност на полето
Много бърз и ефективен начин да получите стойността на поле в MODX Revolution от Джейсън Кауърд.
Да предположим, че трябва да получите стойността на поле на някакъв обект (ресурс, потребител и т.н.). Нека да разгледаме типичен пример за решаване на този прост проблем.
Дотук всичко е просто: ресурс се извлича с >
Но този метод е много ресурсоемък, тъй като полученият обект заема неприемливо голямо количество памет, ако трябва да получите само стойността на едно поле.
Но си струва да добавите малко магия и всичко ще работи малко по-бързо.
Конкретен пример
Нека подобрим последния пример.
Обяснение
Този метод работи за всеки MODX обект. Първият аргумент на $modx->newQuery() е името на класа на обекта, чиято стойност на полето трябва да бъде извлечена (modUser, modResource, modUserProfile и т.н.). Вторият аргумент е асоциативен масив и съдържа вече известната информация за обекта. След това методът select указва полето, чиято стойност искате да получите, в този случай pagetitle. Ако нещо се обърка (не е намерен обект или поле), методът getValue ще върне false.
Ако потребителският идентификатор е известен, тогава всичко е наред.
Ами ако е известно само потребителското име на потребителя? Основното нещо е да не се паникьосвате.
Полето за потребителско име се съхранява не в modUserProfile, а в modUser, така че трябва да направите допълнителна стъпка.
Ресурсни полета като createdby, editedby, publishedby и deletedby съдържат потребителския идентификатор. Получаването на потребителското име може да изглежда така:
Но как да получите стойността на полето на профила?
Имайте предвид, че когато извличате съдържанието на обекти като ресурс,парче, шаблон, фрагмент или плъгин, тяхното съдържание няма да бъде обработено от анализатора.