diff --git a/src/Form/FormTrait.php b/src/Form/FormTrait.php
index 992d84e..e2ac88c 100644
--- a/src/Form/FormTrait.php
+++ b/src/Form/FormTrait.php
@@ -6,6 +6,7 @@ use Lean\Api\Factory\MessageFactoryInterface;
use Lean\LanguageHandler;
use Picea\Ui\Method\FormContextInterface;
use Ulmus\Entity\EntityInterface;
+use Ulmus\EntityCollection;
trait FormTrait
{
@@ -29,7 +30,7 @@ trait FormTrait
return $this->languageHandler->languageFromKey($key, $variables);
}
- public function getEntity() : EntityInterface
+ public function getEntity() : EntityInterface|EntityCollection
{
if (! isset($this->entity)) {
throw new \InvalidArgumentException($this->lang("lean.api.form.error.entity"));
diff --git a/src/Middleware/ApiRenderer.php b/src/Middleware/ApiRenderer.php
index 47a09ab..616d958 100644
--- a/src/Middleware/ApiRenderer.php
+++ b/src/Middleware/ApiRenderer.php
@@ -33,11 +33,11 @@ class ApiRenderer implements MiddlewareInterface {
'data' => [
# 'error_id' => $errorId,
'message' => $ex->getMessage(),
+ ] + (getenv('DEBUG') ? [
'file' => $ex->getFile(),
'line' => $ex->getLine(),
'code' => $ex->getCode(),
- 'backtrace' => $ex->getTrace(),
- ]
+ 'backtrace' => $ex->getTrace(), ] : [])
], 500);
}
diff --git a/view/lean-api/entity_descriptor.phtml b/view/lean-api/entity_descriptor.phtml
index a6b2639..60331b6 100644
--- a/view/lean-api/entity_descriptor.phtml
+++ b/view/lean-api/entity_descriptor.phtml
@@ -11,12 +11,11 @@
{% foreach $entities as $name => $entity %}
-
{{ $name }}
+
{{ $entity['className'] }}
{{ $entity['description'] }}
-
Champs
{% foreach $entity['fields'] as $field %}
-
@@ -37,32 +36,35 @@
-
-
{{ $name }}::searchRequest()
+ {% if $entity['searchRequestFields'] %}
+
+
{{ $entity['className'] }}::searchRequest()
-
Requêtes
-
{{ $entity['searchRequestDescription'] }}
+ {% if $entity['searchRequestDescription'] %}
+
{{ $entity['searchRequestDescription'] }}
+ {% endif %}
-
- {% foreach $entity['searchRequestFields'] as $field %}
- -
-
-
{{ $field['name'] }} {{ $field['description'] }}
-
+
+ {% foreach $entity['searchRequestFields'] as $field %}
+ -
+
+
{{ $field['name'] }} {{ $field['description'] }}
+
-
-
Paramètre de requête (GET) : {{ $field['parameter'] }}
-
Attribut : {{ $field['tag'] }}
-
Type(s) : {{ $field['type'] }}
-
Nullable : {{ yesOrNo($field['allowNulls']) }}
- {% if $field['default'] !== "" %}
-
Valeur par défault : {{ $this->displayValue($field['default']) }}
- {% endif %}
-
-
- {% endforeach %}
-
-
+
+
Paramètre de requête (GET) : {{ $field['parameter'] }}
+
Attribut : {{ $field['tag'] }}
+
Type(s) : {{ $field['type'] }}
+
Nullable : {{ yesOrNo($field['allowNulls']) }}
+ {% if $field['default'] !== "" %}
+
Valeur par défault : {{ $this->displayValue($field['default']) }}
+ {% endif %}
+
+
+ {% endforeach %}
+
+
+ {% endif %}
{% or %}
{% _ "none" %}
{% endforeach %}
diff --git a/view/lean-api/form_descriptor.phtml b/view/lean-api/form_descriptor.phtml
index b2d1c97..dbc879d 100644
--- a/view/lean-api/form_descriptor.phtml
+++ b/view/lean-api/form_descriptor.phtml
@@ -8,7 +8,7 @@
{% foreach $forms as $name => $form %}
@@ -33,7 +34,9 @@
.request-head {display:flex;padding-top: 4px;border:1px solid #e1e1e1;border-bottom:0}
.request-head .method {width: 90px;text-align: center;line-height: 34px;font-weight: bold;}
.request-head .method select {background:none;border:0;font-size: inherit;text-align: center;color: inherit;font-weight: bold;}
- .request-head .url input {width: calc(100% - 94px); border:0;color: #6f6f6f;background: #f9f9f9;font-size: 80%;font-weight: bold;}
+ .request-head .url input {border:0;color: #6f6f6f;background: #f9f9f9;font-size: 80%;font-weight: bold;}
+ .request-head .url [name="url"] {width: calc(65% - 80px);}
+ .request-head .url [name="token"] {width:calc(35% - 10px);font-size:60%}
.request-head .url button {font-size: 80%;width: 80px;border-radius:0;border: 1px solid #ccc;height:26px;padding: 0;background:#f9f9f9;color: #6f6f6f;cursor: pointer;}
.request-head .url button:active {filter:contrast(85%);}
@@ -55,6 +58,7 @@
responseResponse = requestDebugger.querySelector(".request-response"),
method = requestHead.querySelector(".method"),
input = requestHead.querySelector("[name='url']"),
+ token = requestHead.querySelector("[name='token']"),
button = requestHead.querySelector(".request-btn");
// Editor
@@ -159,10 +163,10 @@
method: method,
mode: "cors",
cache: "no-cache",
- credentials: "same-origin",
+ credentials: "omit",
headers: {
"Content-Type": "application/json",
- 'Authorization': 'Bearer {{ $this->session->jwt }}'
+ 'Authorization': `Bearer ${token.value}`
},
redirect: "follow",
referrerPolicy: "no-referrer"
diff --git a/view/lean/layout/docs.phtml b/view/lean/layout/docs.phtml
index 267738a..97a9861 100644
--- a/view/lean/layout/docs.phtml
+++ b/view/lean/layout/docs.phtml
@@ -21,7 +21,7 @@
ol{background: #eff4f2;padding-top:20px;padding-bottom:20px;border:1px solid #e3e3ec}
h4{background:#e0f7ed;padding:6px 12px; font-weight: bold!important;font-size:100%;margin-top:0}
h5{text-decoration: underline}
- h3 {display: flex;align-items: center;height: 60px;padding: 0 15px 0 15px;font-variant: small-caps;}
+ h3 {display: flex;align-items: center;padding: 0 15px 0 15px;font-variant: small-caps;border-bottom: 5px solid #ccc;line-height: 60px;}
li.odd-even{border-top:1px solid #ccc;margin:10px 0;padding:15px 15px 10px 5px}
li.odd-even:first-child{border:0}
input, button {padding:5px; font-size:1em;margin:0}
@@ -39,7 +39,7 @@
.forms .form-name span {color: #284168;font-size:110%}
.forms .form-name .btn {background:rgba(50,50,50,0.5);padding:0 15px;border: 1px solid rgba(50,50,50,0.8);font-family: 'Déja Vu', 'Courier New', Courier, monospace, serif;font-size: 90%;color: #fff;text-decoration: underline;}
- .routes-wrapper {padding:8px}
+ .routes-wrapper {padding:5px}
.routes-wrapper li {display:flex;border: 1px solid #ccc;align-items: stretch;cursor:pointer}
.routes-wrapper li:hover {filter: contrast(85%)}
.routes-wrapper li + li {margin-top: 5px;}
@@ -70,12 +70,15 @@
.routes-wrapper li.method-put .route-method {background:#d7bf3c;}
.routes-wrapper li.method-put .route-link a, .routes-wrapper li.method-put .route-name {color: #aa941c;}
+ .forms{background: #e8f7ff;padding: 5px;}
+
+ .entities {background: #f0e0e0;padding:5px;}
.entity-wrapper .entity-name {background:#eaa1af;color: #682828;font-size:110%}
- .entity-wrapper ol {background: #f0ddcd;}
+ .entity-wrapper ol {background: #e3d0d0;}
.entity-wrapper li {border-color: #ae8585;}
.search-request-name {background: #b6e6ae;color: #395332;font-size:110%}
- .search-request-wrapper {padding-left: 15px;border-left: 3px solid #72886a;}
+ .search-request-wrapper {padding: 15px;margin-top:5px;border-left: 3px solid #72886a;background: #eeffe6;}
.search-request-wrapper ol {background: #d8f0cd;}
.search-request-wrapper li {border-color: #72886a;}