- Fixed a part of Block's doc ; more work to be done on that part

- Fixed whitespaces from unprinted block parts
- Reworked a bit the UrlExtension route grabbing part
This commit is contained in:
Dave Mc Nicoll 2024-10-16 20:30:27 +00:00
parent 5e54407f74
commit 934643214e
3 changed files with 23 additions and 12 deletions

View File

@ -96,9 +96,9 @@ You can do so by using `define` and `slot`.
```html
{% arguments string $name, string $anchor, int $index = 0 %}
{% define slot %}
{% define "attributes" %}
<a {% slot "attributes" %}href="{{ $anchor }}" tabindex="{{ $index }}"{% endslot %}>{{ $name }}"</a>
<a {% slot "attributes" %}{% endslot %} href="{{ $anchor }}" tabindex="{{ $index }}"{% endslot %}>{{ $name }}"</a>
```
**[HTML]** Would render the same as the `view` example :

View File

@ -43,7 +43,7 @@ class BlockToken implements ControlStructure {
end($slotDefinitions)->setDefinition(eval("return $name;"), $definition);
return <<<PHP
<?php \$this->defineSlot($name, function($definition) {}); ?>
<?php \$this->defineSlot($name, function($definition) {}); ?>
PHP;
case "slot":
@ -65,7 +65,7 @@ class BlockToken implements ControlStructure {
}
return <<<PHP
<?php \$this->printSlot($name, function($definition array \$___using = []) use (\$picea $loops) { extract(\$___using, \EXTR_SKIP); ?>
<?php \$this->printSlot($name, function($definition array \$___using = []) use (\$picea $loops) { extract(\$___using, \EXTR_SKIP); ?>
PHP;
}
else {
@ -74,7 +74,7 @@ class BlockToken implements ControlStructure {
}
return <<<PHP
<?php (\$___block ?? \$this)->slotIsSet($name) || \$___block->setSlot($name, function($definition array \$___using = []) use (\$picea $loops) { extract(\$___using, \EXTR_SKIP); ?>
<?php (\$___block ?? \$this)->slotIsSet($name) || \$___block->setSlot($name, function($definition array \$___using = []) use (\$picea $loops) { extract(\$___using, \EXTR_SKIP); ?>
PHP;
}
@ -89,7 +89,7 @@ class BlockToken implements ControlStructure {
}
return <<<PHP
<?php })->call(\$this, $definition array_merge(get_defined_vars(), \$this->using)); ?>
<?php })->call(\$this, $definition array_merge(get_defined_vars(), \$this->using)); ?>
PHP;
}
else {
@ -184,7 +184,7 @@ class BlockToken implements ControlStructure {
public function printDefinition(string $name) : string
{
if ( ! isset($this->definitions[$name]) ) {
throw new \Exception("Slot definition for `$name` was not found. Have you defined it in your block header ?");
throw new \Exception("Slot definition for `$name` was not found. Have you defined it in your block header using something like '{% define \"$name\", ...\$arguments %}' ?");
}
return $this->definitions[$name];
@ -194,7 +194,6 @@ class BlockToken implements ControlStructure {
{
$this->rendering = true;
}
};
}

View File

@ -120,7 +120,7 @@ PATTERN;
public function buildRouteUrl(string $name, array $parameters = [], bool $appendVersion = false) : string
{
if ( false !== ( $route = $this->routes[$name] ?? false ) ) {
if ( false !== $route = $this->findRoute($name) ) {
return $this->buildUrl($this->prepareRoute($route, $parameters), $parameters, $appendVersion);
}
@ -149,14 +149,26 @@ PATTERN;
public function registerRoute(string $name, string $route, string $class, string $method, array $routeMethods) : void
{
$this->routes[$name] = [
$this->routes[] = $array = [
'name' => $name,
'route' => $route,
'routeMethods' => $routeMethods,
'routeMethods' => array_map('strtoupper', $routeMethods),
'class' => $class,
'classMethod' => $method,
];
$this->eventExecute(UrlRegisterRouteEvent::class, $name, $this->routes[$name]);
$this->eventExecute(UrlRegisterRouteEvent::class, $name, $array);
}
protected function findRoute(string $name, string $method = "GET") : false|array
{
foreach($this->routes as $route) {
if ( ($route['name'] === $name) && in_array(strtoupper($method), $route['routeMethods']) ) {
return $route;
}
}
return false;
}
/**