mirror of
https://github.com/Karaka-Management/phpOMS.git
synced 2026-01-11 01:38:41 +00:00
mode changes
This commit is contained in:
parent
122d48d493
commit
333741d1ef
|
|
@ -30,9 +30,11 @@ interface RenderableInterface
|
|||
/**
|
||||
* Get the evaluated contents of the object.
|
||||
*
|
||||
* @param mixed ...$data Data to pass to renderer
|
||||
*
|
||||
* @return string Returns rendered output
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function render() : string;
|
||||
public function render(...$data) : string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ final class HttpResponse extends ResponseAbstract implements RenderableInterface
|
|||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function render(bool $optimize = false) : string
|
||||
public function render(...$data) : string
|
||||
{
|
||||
$types = $this->header->get('Content-Type');
|
||||
|
||||
|
|
@ -116,7 +116,7 @@ final class HttpResponse extends ResponseAbstract implements RenderableInterface
|
|||
}
|
||||
}
|
||||
|
||||
return $this->getRaw($optimize);
|
||||
return $this->getRaw($data[0]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -196,4 +196,14 @@ final class HttpResponse extends ResponseAbstract implements RenderableInterface
|
|||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function endAllOutputBuffering() : void
|
||||
{
|
||||
$this->header->push();
|
||||
|
||||
$levels = \ob_get_level();
|
||||
for ($i = 0; $i < $levels; ++$i) {
|
||||
\ob_end_clean();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -142,11 +142,13 @@ final class Head implements RenderableInterface
|
|||
/**
|
||||
* Get the evaluated contents of the object.
|
||||
*
|
||||
* @param mixed ...$data Data to pass to renderer
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function render() : string
|
||||
public function render(...$data) : string
|
||||
{
|
||||
$head = '';
|
||||
$head .= $this->meta->render();
|
||||
|
|
|
|||
|
|
@ -227,7 +227,7 @@ final class Meta implements RenderableInterface
|
|||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function render() : string
|
||||
public function render(...$data) : string
|
||||
{
|
||||
return (\count($this->keywords) > 0 ? '<meta name="keywords" content="' . ViewAbstract::html(\implode(',', $this->keywords)) . '">' : '')
|
||||
. (!empty($this->author) ? '<meta name="author" content="' . ViewAbstract::html($this->author) . '">' : '')
|
||||
|
|
|
|||
|
|
@ -35,6 +35,14 @@ abstract class ViewAbstract implements RenderableInterface
|
|||
*/
|
||||
private const BASE_PATH = __DIR__ . '/../..';
|
||||
|
||||
/**
|
||||
* Output is buffered
|
||||
*
|
||||
* @var bool
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public bool $isBuffered = true;
|
||||
|
||||
/**
|
||||
* Template.
|
||||
*
|
||||
|
|
@ -230,7 +238,9 @@ abstract class ViewAbstract implements RenderableInterface
|
|||
$ob = '';
|
||||
|
||||
try {
|
||||
\ob_start();
|
||||
if ($this->isBuffered) {
|
||||
\ob_start();
|
||||
}
|
||||
|
||||
$path = $this->template;
|
||||
if (!\is_file($path)) {
|
||||
|
|
@ -239,13 +249,48 @@ abstract class ViewAbstract implements RenderableInterface
|
|||
|
||||
/** @noinspection PhpIncludeInspection */
|
||||
$includeData = include $path;
|
||||
$ob = (string) \ob_get_clean();
|
||||
|
||||
if ($this->isBuffered) {
|
||||
$ob = (string) \ob_get_clean();
|
||||
}
|
||||
|
||||
if (\is_array($includeData)) {
|
||||
$ob = (string) \json_encode($includeData);
|
||||
}
|
||||
} catch (\Throwable $e) {
|
||||
\ob_end_clean();
|
||||
if ($this->isBuffered) {
|
||||
\ob_end_clean();
|
||||
}
|
||||
|
||||
$ob = '';
|
||||
} finally {
|
||||
return $ob;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Very similar to render, except that it executes the template file and returns its response as is.
|
||||
* This allows to build the template as any datatype (e.g. pdf).
|
||||
*
|
||||
* @param mixed ...$data Data to pass to build
|
||||
*
|
||||
* @return mixed
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function build(...$data) : mixed
|
||||
{
|
||||
$ob = '';
|
||||
|
||||
try {
|
||||
$path = $this->template;
|
||||
if (!\is_file($path)) {
|
||||
throw new PathException($path);
|
||||
}
|
||||
|
||||
/** @noinspection PhpIncludeInspection */
|
||||
$ob = include $path;
|
||||
} catch (\Throwable $e) {
|
||||
$ob = '';
|
||||
} finally {
|
||||
return $ob;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user