Создание произвольных страниц
В Iris CRM предусмотрен механизм создания произвольных страниц. Методы, реализующие построение таких страниц, описываются в PHP скриптах конфигурации, в каждом разделе.
Запросы к страницам имеют следующий вид:
https://iriscrm.domain/page/<section>/<method>
Например, запрос
https://iriscrm.domain/page/Product/list
приведет к вызову метода
\MyCompany\Config\MyConfig\sections\page_Product::list()
.
Для методов с аннотацией @ReauireAuth(false)
авторизация не требуется.
Пример метода, выполняющего построение произвольной страницы
https://iriscrm.domain/page/Demo/testMethodWithoutAuth
<?php
namespace SomeClient\Config\ConfigName\sections\Demo;
use Config;
use Iris\Annotation\RequestMethod;
use Iris\Annotation\RequireAuth;
class page_Demo extends Config
{
/**
* @RequireAuth(false)
* @RequestMethod({"get"})
* @param \Symfony\Component\HttpFoundation\Request $request
* @return string
*/
public function testMethodWithoutAuth($request) {
return '<html>My HTML page</html>';
}
/**
* @RequireAuth(false)
* @RequestMethod({"get"})
* @param \Symfony\Component\HttpFoundation\Request $request
* @return string
*/
public function usingTwig($request) {
return $this->renderView('demo', [
'data' => $request->query->all(),
]);
}
}
Можно определять необходимость авторизации с помощью аннотации
@\Iris\Annotations\RequireAuth
.
Также можно ограничивать доступ запросам разных типов
с помощью аннотации @\Iris\Annotation\RequestMethod
.
В случае, если необходимо подменить роутер, отвечающий за обработку таких запросов, переопределите используемый роутер в сервис провайдере.
<?php
$this->container
->register('page.router', CustomPageRouter::class)
->addArgument(new Reference('http.request'))
->addArgument(new Reference('loader'));