<p><a href="<?php echo site_url($record->dept->slug); ?>">Back to Division Home</a></p>
<div class="row">
<div class="col-md-8">
<div class="row">
<div id="main_area">
<!-- Slider -->
<div class="row">
<h2 class="section-title-2"> <?php echo e($record->title); ?></h2>
<?php if(count($attachments) > 0): ?>
<div class="col-sm-12">
<div class="col-xs-12" id="slider">
<!-- Top part of the slider -->
<div class="row">
<div class="col-sm-12" id="carousel-bounding-box">
<div class="carousel slide" id="myCarousel1">
<!-- Carousel items -->
<div class="carousel-inner">
<?php
$i = 0;
?>
<?php foreach($attachments as $attach): ?>
<?php if($i == 0): ?>
<div class="active item" data-slide-number="<?php echo $i; ?>">
<img src="<?php echo resource_url($attach->filePath, 'CaseStudies'); ?>">
</div>
<?php else: ?>
<div class="item" data-slide-number="<?php echo $i; ?>">
<img src="<?php echo resource_url($attach->filePath, 'CaseStudies'); ?>">
</div>
<?php endif; ?>
<?php
Arguments
"Trying to get property 'slug' of non-object (View: /home/sangwinco/nova/app/Modules/CaseStudies/Views/CaseStudy/Index.tpl)"
<p><a href="<?php echo site_url($record->dept->slug); ?>">Back to Division Home</a></p>
<div class="row">
<div class="col-md-8">
<div class="row">
<div id="main_area">
<!-- Slider -->
<div class="row">
<h2 class="section-title-2"> <?php echo e($record->title); ?></h2>
<?php if(count($attachments) > 0): ?>
<div class="col-sm-12">
<div class="col-xs-12" id="slider">
<!-- Top part of the slider -->
<div class="row">
<div class="col-sm-12" id="carousel-bounding-box">
<div class="carousel slide" id="myCarousel1">
<!-- Carousel items -->
<div class="carousel-inner">
<?php
$i = 0;
?>
<?php foreach($attachments as $attach): ?>
<?php if($i == 0): ?>
<div class="active item" data-slide-number="<?php echo $i; ?>">
<img src="<?php echo resource_url($attach->filePath, 'CaseStudies'); ?>">
</div>
<?php else: ?>
<div class="item" data-slide-number="<?php echo $i; ?>">
<img src="<?php echo resource_url($attach->filePath, 'CaseStudies'); ?>">
</div>
<?php endif; ?>
<?php
Arguments
"Trying to get property 'slug' of non-object"
<p><a href="<?php echo site_url($record->dept->slug); ?>">Back to Division Home</a></p>
<div class="row">
<div class="col-md-8">
<div class="row">
<div id="main_area">
<!-- Slider -->
<div class="row">
<h2 class="section-title-2"> <?php echo e($record->title); ?></h2>
<?php if(count($attachments) > 0): ?>
<div class="col-sm-12">
<div class="col-xs-12" id="slider">
<!-- Top part of the slider -->
<div class="row">
<div class="col-sm-12" id="carousel-bounding-box">
<div class="carousel slide" id="myCarousel1">
<!-- Carousel items -->
<div class="carousel-inner">
<?php
$i = 0;
?>
<?php foreach($attachments as $attach): ?>
<?php if($i == 0): ?>
<div class="active item" data-slide-number="<?php echo $i; ?>">
<img src="<?php echo resource_url($attach->filePath, 'CaseStudies'); ?>">
</div>
<?php else: ?>
<div class="item" data-slide-number="<?php echo $i; ?>">
<img src="<?php echo resource_url($attach->filePath, 'CaseStudies'); ?>">
</div>
<?php endif; ?>
<?php
Arguments
8
"Trying to get property 'slug' of non-object"
"/home/sangwinco/nova/storage/views/7f4f5f869f108f560c70ab305bd1d51c62cb8c74.php"
1
array:17 [
"__path" => "/home/sangwinco/nova/storage/views/7f4f5f869f108f560c70ab305bd1d51c62cb8c74.php"
"__data" => array:14 [
"__env" => Factory {#429}
"app" => Application {#3}
"errors" => MessageBag {#431}
"version" => "3.77.26"
"csrfToken" => "6RxdEwILACIeRJw7eN50ZVJC9Ca2YEHS9yE26A0f"
"currentUri" => "casestudy/commemorative-stone-18"
"baseUri" => "casestudy/commemorative-stone-18"
"eventModuleAfterBody" => array:1 [
0 => array:2 [
"body" => """
<div class="modal fade" id="ModalLong" tabindex="-1" role="dialog">\n
<div class="modal-dialog" role="document">\n
<div class="modal-content">\n
<div class="modal-header">\n
<h5 class="modal-title" id="title">Title</h5>\n
<button type="button" class="close" data-dismiss="modal" aria-label="Close">\n
<span aria-hidden="true">×</span>\n
</button>\n
</div>\n
<div class="modal-body">\n
\n
</div>\n
</div>\n
</div>\n
</div>\n
"""
"weight" => 1
]
]
"eventModuleJsFiles" => array:1 [
0 => array:2 [
"file" => "https://sangwin.co.uk/modules/case-studies/assets/js/casestudies.js"
"weight" => 1
]
]
"eventModuleCssFiles" => []
"title" => "Commemorative Stone - Case Study"
"record" => CaseStudy {#467}
"attachments" => Collection {#460}
"casestudies" => Collection {#478}
]
"obLevel" => 0
"__env" => Factory {#429}
"app" => Application {#3}
"errors" => MessageBag {#431}
"version" => "3.77.26"
"csrfToken" => "6RxdEwILACIeRJw7eN50ZVJC9Ca2YEHS9yE26A0f"
"currentUri" => "casestudy/commemorative-stone-18"
"baseUri" => "casestudy/commemorative-stone-18"
"eventModuleAfterBody" => array:1 [
0 => array:2 [
"body" => """
<div class="modal fade" id="ModalLong" tabindex="-1" role="dialog">\n
<div class="modal-dialog" role="document">\n
<div class="modal-content">\n
<div class="modal-header">\n
<h5 class="modal-title" id="title">Title</h5>\n
<button type="button" class="close" data-dismiss="modal" aria-label="Close">\n
<span aria-hidden="true">×</span>\n
</button>\n
</div>\n
<div class="modal-body">\n
\n
</div>\n
</div>\n
</div>\n
</div>\n
"""
"weight" => 1
]
]
"eventModuleJsFiles" => array:1 [
0 => array:2 [
"file" => "https://sangwin.co.uk/modules/case-studies/assets/js/casestudies.js"
"weight" => 1
]
]
"eventModuleCssFiles" => []
"title" => "Commemorative Stone - Case Study"
"record" => CaseStudy {#467}
"attachments" => Collection {#460}
"casestudies" => Collection {#478}
]
protected function evaluatePath($__path, $__data)
{
$obLevel = ob_get_level();
//
ob_start();
// Extract the rendering variables.
foreach ($__data as $__variable => $__value) {
${$__variable} = $__value;
}
// Housekeeping...
unset($__variable, $__value);
// We'll evaluate the contents of the view inside a try/catch block so we can
// flush out any stray output that might get out before an error occurs or
// an exception is thrown. This prevents any partial views from leaking.
try {
include $__path;
}
catch (\Exception $e) {
$this->handleViewException($e, $obLevel);
}
catch (\Throwable $e) {
$this->handleViewException($e, $obLevel);
}
return ltrim(ob_get_clean());
}
/**
* Handle a View Exception.
*
* @param \Exception $e
* @param int $obLevel
* @return void
*
* @throws $e
*/
Arguments
"/home/sangwinco/nova/storage/views/7f4f5f869f108f560c70ab305bd1d51c62cb8c74.php"
* @param array $data
* @return string
*/
public function get($path, array $data = array())
{
$this->lastCompiled[] = $path;
// If this given view has expired, which means it has simply been edited since
// it was last compiled, we will re-compile the views so we can evaluate a
// fresh copy of the view. We'll pass the compiler the path of the view.
if ($this->compiler->isExpired($path)) {
$this->compiler->compile($path);
}
$compiled = $this->compiler->getCompiledPath($path);
// Once we have the path to the compiled file, we will evaluate the paths with
// typical PHP just like any other templates. We also keep a stack of views
// which have been rendered for right exception messages to be generated.
$results = $this->evaluatePath($compiled, $data);
array_pop($this->lastCompiled);
return $results;
}
/**
* Handle a view exception.
*
* @param \Exception $e
* @param int $obLevel
* @return void
*
* @throws $e
*/
protected function handleViewException($e, $obLevel)
{
if (! $e instanceof \Exception) {
$e = new FatalThrowableError($e);
}
Arguments
"/home/sangwinco/nova/storage/views/7f4f5f869f108f560c70ab305bd1d51c62cb8c74.php"
array:14 [
"__env" => Factory {#429}
"app" => Application {#3}
"errors" => MessageBag {#431}
"version" => "3.77.26"
"csrfToken" => "6RxdEwILACIeRJw7eN50ZVJC9Ca2YEHS9yE26A0f"
"currentUri" => "casestudy/commemorative-stone-18"
"baseUri" => "casestudy/commemorative-stone-18"
"eventModuleAfterBody" => array:1 [
0 => array:2 [
"body" => """
<div class="modal fade" id="ModalLong" tabindex="-1" role="dialog">\n
<div class="modal-dialog" role="document">\n
<div class="modal-content">\n
<div class="modal-header">\n
<h5 class="modal-title" id="title">Title</h5>\n
<button type="button" class="close" data-dismiss="modal" aria-label="Close">\n
<span aria-hidden="true">×</span>\n
</button>\n
</div>\n
<div class="modal-body">\n
\n
</div>\n
</div>\n
</div>\n
</div>\n
"""
"weight" => 1
]
]
"eventModuleJsFiles" => array:1 [
0 => array:2 [
"file" => "https://sangwin.co.uk/modules/case-studies/assets/js/casestudies.js"
"weight" => 1
]
]
"eventModuleCssFiles" => []
"title" => "Commemorative Stone - Case Study"
"record" => CaseStudy {#467}
"attachments" => Collection {#460}
"casestudies" => Collection {#478}
]
*
* @return array
*/
public function renderSections()
{
$env = $this->factory;
return $this->render(function ($view) use ($env) {
return $env->getSections();
});
}
/**
* Get the evaluated contents of the view.
*
* @return string
*/
protected function getContents()
{
return $this->engine->get($this->path, $this->gatherData());
}
/**
* Return all variables stored on local and shared data.
*
* @return array
*/
public function gatherData()
{
$data = array_merge($this->factory->getShared(), $this->data);
// All nested Views are evaluated before the main View.
foreach ($data as $key => $value) {
if ($value instanceof Renderable) {
$data[$key] = $value->render();
}
}
return $data;
}
Arguments
"/home/sangwinco/nova/app/Modules/CaseStudies/Views/CaseStudy/Index.tpl"
array:14 [
"__env" => Factory {#429}
"app" => Application {#3}
"errors" => MessageBag {#431}
"version" => "3.77.26"
"csrfToken" => "6RxdEwILACIeRJw7eN50ZVJC9Ca2YEHS9yE26A0f"
"currentUri" => "casestudy/commemorative-stone-18"
"baseUri" => "casestudy/commemorative-stone-18"
"eventModuleAfterBody" => array:1 [
0 => array:2 [
"body" => """
<div class="modal fade" id="ModalLong" tabindex="-1" role="dialog">\n
<div class="modal-dialog" role="document">\n
<div class="modal-content">\n
<div class="modal-header">\n
<h5 class="modal-title" id="title">Title</h5>\n
<button type="button" class="close" data-dismiss="modal" aria-label="Close">\n
<span aria-hidden="true">×</span>\n
</button>\n
</div>\n
<div class="modal-body">\n
\n
</div>\n
</div>\n
</div>\n
</div>\n
"""
"weight" => 1
]
]
"eventModuleJsFiles" => array:1 [
0 => array:2 [
"file" => "https://sangwin.co.uk/modules/case-studies/assets/js/casestudies.js"
"weight" => 1
]
]
"eventModuleCssFiles" => []
"title" => "Commemorative Stone - Case Study"
"record" => CaseStudy {#467}
"attachments" => Collection {#460}
"casestudies" => Collection {#478}
]
throw $e;
}
}
/**
* Render the View and return the result.
*
* @return string
*/
public function renderContents()
{
// We will keep track of the amount of views being rendered so we can flush
// the section after the complete rendering operation is done. This will
// clear out the sections for any separate views that may be rendered.
$this->factory->incrementRender();
$this->factory->callComposer($this);
$contents = $this->getContents();
// Once we've finished rendering the view, we'll decrement the render count
// so that each sections get flushed out next time a view is created and
// no old sections are staying around in the memory of an environment.
$this->factory->decrementRender();
return $contents;
}
/**
* Get the sections of the rendered view.
*
* @return array
*/
public function renderSections()
{
$env = $this->factory;
return $this->render(function ($view) use ($env) {
return $env->getSections();
$this->factory = $factory;
$this->engine = $engine;
//
$this->view = $view;
$this->path = $path;
$this->data = ($data instanceof Arrayable) ? $data->toArray() : (array) $data;
}
/**
* Get the string contents of the View.
*
* @param \Closure $callback
* @return string
*/
public function render(Closure $callback = null)
{
try {
$contents = $this->renderContents();
$response = isset($callback) ? $callback($this, $contents) : null;
// Once we have the contents of the view, we will flush the sections if we are
// done rendering all views so that there is nothing left hanging over when
// another view gets rendered in the future by the application developer.
$this->factory->flushSectionsIfDoneRendering();
return $response ?: $contents;
} catch (Exception $e) {
$this->factory->flushSections();
throw $e;
}
}
/**
* Render the View and return the result.
*
* @return string
* @return string
*/
protected function getContents()
{
return $this->engine->get($this->path, $this->gatherData());
}
/**
* Return all variables stored on local and shared data.
*
* @return array
*/
public function gatherData()
{
$data = array_merge($this->factory->getShared(), $this->data);
// All nested Views are evaluated before the main View.
foreach ($data as $key => $value) {
if ($value instanceof Renderable) {
$data[$key] = $value->render();
}
}
return $data;
}
/**
* Add a view instance to the view data.
*
* <code>
* // Add a View instance to a View's data
* $view = View::make('foo')->nest('footer', 'Partials/Footer');
*
* // Equivalent functionality using the "with" method
* $view = View::make('foo')->with('footer', View::make('Partials/Footer'));
* </code>
*
* @param string $key
* @param string $view
* @param array $data
*
* @return array
*/
public function renderSections()
{
$env = $this->factory;
return $this->render(function ($view) use ($env) {
return $env->getSections();
});
}
/**
* Get the evaluated contents of the view.
*
* @return string
*/
protected function getContents()
{
return $this->engine->get($this->path, $this->gatherData());
}
/**
* Return all variables stored on local and shared data.
*
* @return array
*/
public function gatherData()
{
$data = array_merge($this->factory->getShared(), $this->data);
// All nested Views are evaluated before the main View.
foreach ($data as $key => $value) {
if ($value instanceof Renderable) {
$data[$key] = $value->render();
}
}
return $data;
}
throw $e;
}
}
/**
* Render the View and return the result.
*
* @return string
*/
public function renderContents()
{
// We will keep track of the amount of views being rendered so we can flush
// the section after the complete rendering operation is done. This will
// clear out the sections for any separate views that may be rendered.
$this->factory->incrementRender();
$this->factory->callComposer($this);
$contents = $this->getContents();
// Once we've finished rendering the view, we'll decrement the render count
// so that each sections get flushed out next time a view is created and
// no old sections are staying around in the memory of an environment.
$this->factory->decrementRender();
return $contents;
}
/**
* Get the sections of the rendered view.
*
* @return array
*/
public function renderSections()
{
$env = $this->factory;
return $this->render(function ($view) use ($env) {
return $env->getSections();
$this->factory = $factory;
$this->engine = $engine;
//
$this->view = $view;
$this->path = $path;
$this->data = ($data instanceof Arrayable) ? $data->toArray() : (array) $data;
}
/**
* Get the string contents of the View.
*
* @param \Closure $callback
* @return string
*/
public function render(Closure $callback = null)
{
try {
$contents = $this->renderContents();
$response = isset($callback) ? $callback($this, $contents) : null;
// Once we have the contents of the view, we will flush the sections if we are
// done rendering all views so that there is nothing left hanging over when
// another view gets rendered in the future by the application developer.
$this->factory->flushSectionsIfDoneRendering();
return $response ?: $contents;
} catch (Exception $e) {
$this->factory->flushSections();
throw $e;
}
}
/**
* Render the View and return the result.
*
* @return string
/**
* Method executed after any action.
*
* @param mixed $response
*
* @return \Symfony\Component\HttpFoundation\Response
*/
protected function after($response)
{
if ($response instanceof Renderable) {
// If the response which is returned from the called Action is a Renderable instance,
// we will assume we want to render it using the Controller's themed environment.
if ((! $response instanceof Layout) && ! empty($this->layout)) {
$response = $this->getLayout()->with('content', $response);
}
// Create and return a proper Response instance.
$content = $response->render();
return Response::make($content);
}
return parent::after($response);
}
/**
* Return a default View instance.
*
* @return \Nova\View\View
* @throws \BadMethodCallException
*/
protected function getView(array $data = array())
{
// Get the currently called method.
$method = $this->getMethod();
// Transform the complete class name on a path like variable.
$path = str_replace('\\', '/', static::class);
* @param string $method
* @param array $params
* @return \Symfony\Component\HttpFoundation\Response
*/
public function callAction($method, $parameters)
{
$this->method = $method;
$this->parameters = $parameters;
// Execute the Before method.
$response = $this->before();
if (is_null($response)) {
// Execute the requested Method.
$response = call_user_func_array(array($this, $method), $parameters);
}
// Process the Response and return it.
return $this->after($response);
}
/**
* Handle calls to missing methods on the Controller.
*
* @param array $parameters
* @return mixed
*
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
*/
public function missingMethod($parameters = array())
{
throw new NotFoundHttpException("Controller method not found.");
}
/**
* Returns the currently called Method.
*
* @return string|null
*/
Arguments
protected function makeController($controller)
{
Controller::setFilterer($this->filterer);
return $this->container->make($controller);
}
/**
* Call the given controller instance method.
*
* @param \Nova\Routing\Controller $instance
* @param \Nova\Routing\Route $route
* @param string $method
* @return mixed
*/
protected function call($instance, $route, $method)
{
$parameters = $route->parametersWithoutNulls();
return $instance->callAction($method, $parameters);
}
/**
* Call the "before" filters for the controller.
*
* @param \Nova\Routing\Controller $instance
* @param \Nova\Routing\Route $route
* @param \Nova\Http\Request $request
* @param string $method
* @return mixed
*/
protected function before($instance, $route, $request, $method)
{
foreach ($instance->getBeforeFilters() as $filter) {
if ($this->filterApplies($filter, $request, $method)) {
$response = $this->callFilter($filter, $route, $request);
if (! is_null($response)) return $response;
}
}
Arguments
"index"
array:1 [
"slug" => "commemorative-stone-18"
]
/**
* Dispatch a request to a given controller and method.
*
* @param \Nova\Routing\Route $route
* @param \Nova\Http\Request $request
* @param string $controller
* @param string $method
* @return mixed
*/
public function dispatch(Route $route, Request $request, $controller, $method)
{
$instance = $this->makeController($controller);
$this->assignAfter($instance, $route, $request, $method);
//
$response = $this->before($instance, $route, $request, $method);
if (is_null($response)) {
$response = $this->call($instance, $route, $method);
}
return $response;
}
/**
* Make a controller instance via the IoC container.
*
* @param string $controller
* @return mixed
*/
protected function makeController($controller)
{
Controller::setFilterer($this->filterer);
return $this->container->make($controller);
}
/**
* Call the given controller instance method.
Arguments
* @return bool
*/
protected function customDispatcherIsBound()
{
return $this->container->bound('framework.route.dispatcher');
}
/**
* Send the request and route to a custom dispatcher for handling.
*
* @param \Nova\Http\Request $request
* @return mixed
*/
protected function runWithCustomDispatcher(Request $request)
{
list($class, $method) = explode('@', $this->action['uses']);
$dispatcher = $this->container->make('framework.route.dispatcher');
return $dispatcher->dispatch($this, $request, $class, $method);
}
/**
* Checks if a Request matches the Route pattern.
*
* @param \Http\Request $request The dispatched Request instance
* @param bool $includingMethod Wheter or not is matched the HTTP Method
* @return bool Match status
*/
public function matches(Request $request, $includingMethod = true)
{
$this->compileRoute();
foreach ($this->getValidators() as $validator) {
if (! $includingMethod && ($validator instanceof MethodValidator)) continue;
if (! $validator->matches($this, $request)) return false;
}
return true;
Arguments
Route {#216}
Request {#2}
"App\Modules\CaseStudies\Controllers\CaseStudy"
"index"
}
}
/**
* Run the route action and return the response.
*
* @param \Nova\Http\Request $request
* @return mixed
*/
public function run(Request $request)
{
$this->container = $this->container ?: new Container();
try {
if (! is_string($this->action['uses'])) {
return $this->runCallable($request);
}
if ($this->customDispatcherIsBound()) {
return $this->runWithCustomDispatcher($request);
}
return $this->runController($request);
}
catch (HttpResponseException $e) {
return $e->getResponse();
}
}
/**
* Run the route action and return the response.
*
* @param \Nova\Http\Request $request
* @return mixed
*/
protected function runCallable(Request $request)
{
$callable = $this->action['uses'];
$parameters = $this->resolveMethodDependencies(
Arguments
*/
public function dispatchToRoute(Request $request)
{
// Execute the Routes matching.
$route = $this->findRoute($request);
$request->setRouteResolver(function() use ($route)
{
return $route;
});
$this->events->fire('router.matched', array($route, $request));
// Once we have successfully matched the incoming request to a given route we
// can call the before filters on that route. This works similar to global
// filters in that if a response is returned we will not call the route.
$response = $this->callRouteBefore($route, $request);
if (is_null($response)) {
$response = $route->run($request);
}
// Prepare the Reesponse.
$response = $this->prepareResponse($request, $response);
// After we have a prepared response from the route or filter we will call to
// the "after" filters to do any last minute processing on this request or
// response object before the response is returned back to the consumer.
$this->callRouteAfter($route, $request, $response);
return $response;
}
/**
* Dispatch the request to a asset file and return the response.
*
* @param \Nova\Http\Request $request
* @return mixed
*/
public function dispatchToFile(Request $request)
Arguments
/**
* Dispatch route
* @return bool
*/
public function dispatch(Request $request)
{
$this->currentRequest = $request;
// Asset Files Dispatching.
$response = $this->dispatchToFile($request);
if (! is_null($response)) return $response;
// If no response was returned from the before filter, we will call the proper
// route instance to get the response. If no route is found a response will
// still get returned based on why no routes were found for this request.
$response = $this->callFilter('before', $request);
if (is_null($response)) {
$response = $this->dispatchToRoute($request);
}
$response = $this->prepareResponse($request, $response);
// Once this route has run and the response has been prepared, we will run the
// after filter to do any last work on the response or for this application
// before we will return the response back to the consuming code for use.
$this->callFilter('after', $request, $response);
return $response;
}
/**
* Dispatch the request to a route and return the response.
*
* @param \Nova\Http\Request $request
* @return mixed
*/
public function dispatchToRoute(Request $request)
{
Arguments
/**
* Handle the given request and get the response.
*
* @param \Nova\Http\Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function dispatch(Request $request)
{
if ($this->isDownForMaintenance()) {
$response = $this['events']->until('nova.app.down');
if (! is_null($response)) return $this->prepareResponse($response, $request);
}
if ($this->runningUnitTests() && ! $this['session']->isStarted()) {
$this['session']->start();
}
return $this['router']->dispatch($this->prepareRequest($request));
}
/**
* Call the "finish" and "shutdown" callbacks assigned to the application.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* @param \Symfony\Component\HttpFoundation\Response $response
* @return void
*/
public function terminate(SymfonyRequest $request, SymfonyResponse $response)
{
$this->callFinishCallbacks($request, $response);
$this->shutdown();
}
/**
* Refresh the bound request instance in the container.
*
* @param \Nova\Http\Request $request
Arguments
*
* Provides compatibility with BrowserKit functional testing.
*
* @implements HttpKernelInterface::handle
*
* @param \Symfony\Component\HttpFoundation\Request $request
* @param int $type
* @param bool $catch
* @return \Symfony\Component\HttpFoundation\Response
*
* @throws \Exception
*/
public function handle(SymfonyRequest $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
{
try {
$this->refreshRequest($request = Request::createFromBase($request));
$this->boot();
return $this->dispatch($request);
}
catch (\Exception $e) {
if (! $catch || $this->runningUnitTests()) throw $e;
return $this['exception']->handleException($e);
}
catch (\Throwable $e) {
if (! $catch || $this->runningUnitTests()) throw $e;
return $this['exception']->handleException($e);
}
}
/**
* Handle the given request and get the response.
*
* @param \Nova\Http\Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function dispatch(Request $request)
Arguments
public function __construct(HttpKernelInterface $app, $debug)
{
$this->app = $app;
$this->debug = $debug;
}
/**
* Handle the given request and get the response.
*
* @implements HttpKernelInterface::handle
*
* @param \Symfony\Component\HttpFoundation\Request $request
* @param int $type
* @param bool $catch
* @return \Symfony\Component\HttpFoundation\Response
*/
public function handle(SymfonyRequest $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
{
$response = $this->app->handle($request, $type, $catch);
if (! $this->isHtmlResponse($response)) return $response;
return $this->processResponse($response);
}
/**
* Minify the Response instance Content.
*
* @param \Symfony\Component\HttpFoundation\Response $response
* @return void
*/
protected function processResponse(SymfonyResponse $response)
{
if ($this->debug) {
// Insert the QuickProfiler Widget in the Response's Content.
$content = str_replace(
array(
'<!-- DO NOT DELETE! - Forensics Profiler -->',
'<!-- DO NOT DELETE! - Profiler -->',
Arguments
*
* @param \Symfony\Component\HttpFoundation\Request $request
* @param int $type
* @param bool $catch
* @return \Symfony\Component\HttpFoundation\Response
*/
public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
{
$this->checkRequestForArraySessions($request);
// If a session driver has been configured, we will need to start the session here
// so that the data is ready for an application. Note that the Nova sessions
// do not make use of PHP "native" sessions in any way since they are crappy.
if ($this->sessionConfigured()) {
$session = $this->startSession($request);
$request->setSession($session);
}
$response = $this->app->handle($request, $type, $catch);
// Again, if the session has been configured we will need to close out the session
// so that the attributes may be persisted to some storage medium. We will also
// add the session identifier cookie to the application response headers now.
if ($this->sessionConfigured()) {
$this->closeSession($session);
$this->addCookieToResponse($response, $session);
}
return $response;
}
/**
* Check the request and reject callback for array sessions.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* @return void
*/
public function checkRequestForArraySessions(Request $request)
Arguments
*/
public function __construct(HttpKernelInterface $app, CookieJar $cookies)
{
$this->app = $app;
$this->cookies = $cookies;
}
/**
* Handle the given request and get the response.
*
* @implements HttpKernelInterface::handle
*
* @param \Symfony\Component\HttpFoundation\Request $request
* @param int $type
* @param bool $catch
* @return \Symfony\Component\HttpFoundation\Response
*/
public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
{
$response = $this->app->handle($request, $type, $catch);
foreach ($this->cookies->getQueuedCookies() as $cookie) {
$response->headers->setCookie($cookie);
}
return $response;
}
}
Arguments
*/
public function __construct(HttpKernelInterface $app, Encrypter $encrypter)
{
$this->app = $app;
$this->encrypter = $encrypter;
}
/**
* Handle the given request and get the response.
*
* @implements HttpKernelInterface::handle
*
* @param \Symfony\Component\HttpFoundation\Request $request
* @param int $type
* @param bool $catch
* @return \Symfony\Component\HttpFoundation\Response
*/
public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
{
$response = $this->app->handle($this->decrypt($request), $type, $catch);
return $this->encrypt($response);
}
/**
* Decrypt the cookies on the request.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* @return \Symfony\Component\HttpFoundation\Request
*/
protected function decrypt(Request $request)
{
foreach ($request->cookies as $key => $cookie) {
if($key == 'PHPSESSID') {
// Leave alone the PHPSESSID.
continue;
}
try
{
Arguments
use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\HttpKernel\TerminableInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class StackedHttpKernel implements HttpKernelInterface, TerminableInterface
{
private $app;
private $middlewares = array();
public function __construct(HttpKernelInterface $app, array $middlewares)
{
$this->app = $app;
$this->middlewares = $middlewares;
}
public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
{
return $this->app->handle($request, $type, $catch);
}
public function terminate(Request $request, Response $response)
{
$prevKernel = null;
foreach ($this->middlewares as $kernel) {
// if prev kernel was terminable we can assume this middleware has already been called
if (!$prevKernel instanceof TerminableInterface && $kernel instanceof TerminableInterface) {
$kernel->terminate($request, $response);
}
$prevKernel = $kernel;
}
}
}
Arguments
* @return void
*/
public function booted($callback)
{
$this->bootedCallbacks[] = $callback;
if ($this->isBooted()) $this->fireAppCallbacks(array($callback));
}
/**
* Run the application and send the response.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* @return void
*/
public function run(SymfonyRequest $request = null)
{
$request = $request ?: $this['request'];
$response = with($stack = $this->getStackedClient())->handle($request);
$response->send();
$stack->terminate($request, $response);
}
/**
* Get the stacked HTTP kernel for the application.
*
* @return \Symfony\Component\HttpKernel\HttpKernelInterface
*/
protected function getStackedClient()
{
$sessionReject = $this->bound('session.reject') ? $this['session.reject'] : null;
$client = (new Builder)
->push('Nova\Cookie\Guard', $this['encrypter'])
->push('Nova\Cookie\Queue', $this['cookie'])
->push('Nova\Session\Middleware', $this['session'], $sessionReject);
Arguments
define('PUBLICDIR', realpath(__DIR__) .DS);
//--------------------------------------------------------------------------
// Load the Composer Autoloader
//--------------------------------------------------------------------------
require ROOTDIR .'vendor' .DS .'autoload.php';
//--------------------------------------------------------------------------
// Bootstrap the Framework and get the Application instance
//--------------------------------------------------------------------------
$app = require_once APPDIR .'Boot' .DS .'Start.php';
//--------------------------------------------------------------------------
// Run the Application
//--------------------------------------------------------------------------
$app->run();