Skip to content

🛠️ Хелперы

Хелперы — это глобальные функции, которые облегчают доступ к ключевым компонентам фреймворка. Они являются обёртками над основными классами и методами, часто используемыми при разработке.

⚙️ modx()

Возвращает глобальный экземпляр modX.

php
$modx = modx();

🧾 query(?string $table = null)

Открывает конструктор запросов по таблице. Имя пишется без префикса — его подставит соединение. Без аргумента возвращает само соединение.

php
query('site_content')->where('template', 4)->get();
query();  // Illuminate\Database\MySqlConnection

🧱 model(string $name)

Открывает запрос по модели Eloquent из PageBlocks\App\Models\. В отличие от query(), строки возвращаются моделями — со связями, кастами и скоупами.

php
model('PbResource')->published()->limit(10)->get();

⚙️ config(string $key, $default = null)

Получает значение из конфигурации.

php
$debug = config('app.debug', false);
// или
Config::get('app.debug', false) 
    ?? $modx->getOption('app.debug', null, false);

📁 Конфигурации хранятся в папке: core/App/config/

📥 request(string $key = '')

Возвращает текущий HTTP-запрос или конкретное значение.

php
$request = request();            // $request = Request::getInstance()
$name = request('name');         // $request->get('name');
request()->validate([...]);      // $request->validate([...]);

🌐 uri()

Возвращает текущий URI без расширений и ведущих/замыкающих слэшей.

php
$uri = uri();  
// например: /about.html → "about"
//           /blog/post/ → "blog/post"

🏷️ alias()

Возвращает текущий алиас страницы (последнюю часть URI).

php
$alias = alias();  
// например: /blog/post → "post"
//           /about → "about"

💾 cache(string $key, $value = null, int $ttl = 3600)

Получение или установка значения в кэше.

php
$data = cache('menu');                // $data = Cache::get('menu')
cache('menu', $items, 600);           // Cache::set('menu', $items, 600)

📤 response($content = '', int $status = 200, array $headers = [])

Создаёт и возвращает HTTP-ответ.

php
$response = response();                          // $response = new Response();
return response('OK');                           // $response->text('OK')
return response(['status' => 'ok'], 200);        // $response->json([...])

📌 Тип ответа определяется автоматически: text, json или object.

validate(array $data, array $rules, array $messages = [])

Запускает валидацию данных.

php
$validator = validate(
    ['email' => 'john@example.com'],
    ['email' => 'required|email']
);

// или
$validator = Validator::make($data, $rules, $messages);

🖼️ view(string $template, array $params = [])

Рендерит шаблон с параметрами.

php
$html = view('components.card', ['title' => 'Dashboard']);

// или

$html = View::make('components.card', ['title' => 'Dashboard']);

🔁 redirect(...$args)

Создаёт редирект.

php
$redirect = redirect();         // $redirect = Redirect::getInstance();
redirect('/login');             // $redirect->to('/login');
redirect()->back();             // $redirect->back();

🧭 route(string $name, array $params = [])

Генерация ссылки по имени маршрута.

php
$url = route('post.show', ['id' => 10]); 
// или
Route::route('post.show', ['id' => 10])

🌍 lang(string $key, array $replace = [], string $locale = '')

Получение перевода строки.

php
lang('messages.welcome'); 
// or
Lang::get('messages.welcome');

📁 Переводы хранятся в папке: core/App/lang/{locale}/

🔐 auth(string $context = '')

Проверка авторизации пользователя в заданном (или текущем) контексте.

php
if (auth()) {
    echo 'Вы авторизованы';
}

if (auth('mgr')) {
    echo 'Вы авторизованы в контексте "mgr"';
}

🔁 То же самое, что:

php
$modx->user && $modx->user->isAuthenticated($context ?: $modx->context->key);

abort(int $code = 404, string $text = '')

Останавливает выполнение и возвращает HTTP-ошибку.

php
abort(403, 'Доступ запрещён');
// или
response()->abort(403, 'Доступ запрещён')->send();

📄 console($message, $array = [])

Запись в лог MODX. Второй аргумент печатается через print_r — удобно для массива.

php
console('Заказ не прошёл', $payload);

⚠️ dd($message, $array = [])

Не то, что вы подумали. Это не «dump and die» из Laravel: страница не останавливается и на экран ничего не выводится. Функция полностью совпадает с console() — пишет в лог и идёт дальше.

php
dd('сюда дошли', $data);   // окажется в core/cache/logs/error.log

🌍 Языки

ФункцияЧто возвращает
language()Текущий язык целиком или null
languages()Все активные языки
langs()Готовый набор для переключателя языков
lang_url(string $uri = '')Адрес с префиксом текущего языка
multilingual()Включена ли многоязычность
context()Ключ языка, а если его нет — контекст по умолчанию
php
{if multilingual()}
    {foreach langs() as $item}
        <a href="{$item.url}">{$item.name}</a>
    {/foreach}
{/if}

🔀 route_path(string $name, array $parameters = [])

Собирает адрес именованного маршрута — чтобы не набирать его руками и не искать все вхождения, когда маршрут переедет.

php
route_path('cargo.show', ['id' => 42]);

👤 profile()

Профиль текущего пользователя массивом. Гостю возвращает пустой массив, результат запоминается на время запроса.

Почему не $modx->user

В самой строке пользователя MODX почти ничего нет: email, fullname и расширенные поля живут в профиле. profile() избавляет от $user->getOne('Profile') при каждом обращении.

🛡️ csrf()

Готовое скрытое поле с токеном — вставляется в форму.

html
<form method="post">
    {csrf()}
</form>

🧾 lexicon($key, $namespace = '')

Строка из лексикона MODX. С namespace он подгружается сам.

php
lexicon('pb_blocks', 'pageblocks');

🔢 plural_form($number, array $forms)

Согласование числа со словом. Три формы — для русского, две — для английского.

php
plural_form(5, ['товар', 'товара', 'товаров']);   // товаров
plural_form(2, ['item', 'items']);                 // items

🏳️ Режим площадки

ФункцияЧто делает
site_mode()dev или prod
is_dev(), is_prod()То же самое, но условием

Режим берётся из настройки pageblocks_site_mode; всё, кроме dev, читается как prod.

📚 Списки объектов

ФункцияЧто отдаёт
resources($ids = null, array $options = [])Ресурсы MODX из site_content
pbresources($ids = null, array $options = [])Свои ресурсы из pb_resources
users($ids = null, array $options = [])Пользователи

Те же самые списки доступны в шаблоне модификаторами — см. View.

🌐 http_post(string $url, $data = null, array $headers = [], int $timeout = 10)

POST-запрос наружу, без подключения curl руками. Возвращает массив с ответом.

php
http_post('https://api.example.com/hook', ['id' => 42], ['Authorization: Bearer …']);

🕒 now(string $timezone = null)

Текущий момент как Carbon — со всей его арифметикой дат.

php
now()->addDays(7)->toDateTimeString();

© PageBlocks 2019-present