'finder' => ['byTenantWithCategories' => ['tenant_id' => $tenant->id]],
App\Controller\ProductsController->index() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Controller/Controller.php, line 560 Cake\Controller\Controller->invokeAction() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Controller/ControllerFactory.php, line 140 Cake\Controller\ControllerFactory->handle() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Controller/ControllerFactory.php, line 115 Cake\Controller\ControllerFactory->invoke() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/BaseApplication.php, line 325 Cake\Http\BaseApplication->handle() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/Runner.php, line 86 Cake\Http\Runner->handle() /home/acqprojectsdev/public_html/src/Middleware/TenantMiddleware.php, line 327 App\Middleware\TenantMiddleware->process() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/Runner.php, line 82 Cake\Http\Runner->handle() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/Middleware/BodyParserMiddleware.php, line 157 Cake\Http\Middleware\BodyParserMiddleware->process() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/Runner.php, line 82 Cake\Http\Runner->handle() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Routing/Middleware/RoutingMiddleware.php, line 189 Cake\Routing\Middleware\RoutingMiddleware->process() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/Runner.php, line 82 Cake\Http\Runner->handle() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Routing/Middleware/AssetMiddleware.php, line 68 Cake\Routing\Middleware\AssetMiddleware->process() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/Runner.php, line 82 Cake\Http\Runner->handle() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Error/Middleware/ErrorHandlerMiddleware.php, line 149 Cake\Error\Middleware\ErrorHandlerMiddleware->process() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/Runner.php, line 82 Cake\Http\Runner->handle() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/Runner.php, line 67 Cake\Http\Runner->run() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/Server.php, line 99 Cake\Http\Server->run() /home/acqprojectsdev/public_html/webroot/index.php, line 40 [main]
$message = "Unable to emit headers. Headers sent in file=$file line=$line";trigger_error($message, E_USER_WARNING);}
/home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/ResponseEmitter.php /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/ResponseEmitter.php, line 71 Cake\Http\ResponseEmitter->emit() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/Server.php, line 137 Cake\Http\Server->emit() /home/acqprojectsdev/public_html/webroot/index.php, line 40 [main]
$reasonPhrase = $response->getReasonPhrase();header(sprintf('HTTP/%s %d%s',
/home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/ResponseEmitter.php /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/ResponseEmitter.php, line 164 Cake\Http\ResponseEmitter->emitStatusLine() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/ResponseEmitter.php, line 74 Cake\Http\ResponseEmitter->emit() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/Server.php, line 137 Cake\Http\Server->emit() /home/acqprojectsdev/public_html/webroot/index.php, line 40 [main]
foreach ($values as $value) {header(sprintf('%s: %s',
/home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/ResponseEmitter.php /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/ResponseEmitter.php, line 197 Cake\Http\ResponseEmitter->emitHeaders() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/ResponseEmitter.php, line 75 Cake\Http\ResponseEmitter->emit() /home/acqprojectsdev/public_html/vendor/cakephp/cakephp/src/Http/Server.php, line 137 Cake\Http\Server->emit() /home/acqprojectsdev/public_html/webroot/index.php, line 40 [main]
Products.tenant_id is missing operator (IS, IS NOT) with null value.
📋
$operator = '!='; |
|
} |
|
|
|
if ($value === null && $this->_conjunction !== ',') { |
|
throw new InvalidArgumentException( |
|
sprintf('Expression `%s` is missing operator (IS, IS NOT) with `null` value.', $expression) |
|
); |
|
} |
|
|
continue; |
|
} |
|
|
|
if (!$numericKey) { |
|
$this->_conditions[] = $this->_parseCondition($k, $c); |
|
} |
|
} |
|
} |
|
|
|
|
return $this; |
|
} |
|
|
|
$this->_addConditions($conditions, $types); |
|
|
|
return $this; |
|
} |
|
|
$append = $append($this->newExpr(), $this); |
|
} |
|
|
|
if ($expression->getConjunction() === $conjunction) { |
|
$expression->add($append, $types); |
|
} else { |
|
$expression = $this->newExpr() |
|
->setConjunction($conjunction) |
|
->add([$expression, $append], $types); |
{ |
|
if ($overwrite) { |
|
$this->_parts['where'] = $this->newExpr(); |
|
} |
|
$this->_conjugate('where', $conditions, 'AND', $types); |
|
|
|
return $this; |
|
} |
|
|
public function findByTenantWithCategories(Query $query, array $options): Query |
|
{ |
|
return $query |
|
->contain(['ProductCategories']) |
|
->where(['Products.tenant_id' => $options['tenant_id']]) |
|
->order(['Products.created' => 'DESC']); |
|
} |
|
} |
$query->applyOptions($options); |
|
$options = $query->getOptions(); |
|
$finder = 'find' . $type; |
|
if (method_exists($this, $finder)) { |
|
return $this->{$finder}($query, $options); |
|
} |
|
|
|
if ($this->_behaviors->hasFinder($type)) { |
|
return $this->_behaviors->callFinder($type, [$query, $options]); |
* @return \Cake\ORM\Query The query builder |
|
*/ |
|
public function find(string $type = 'all', array $options = []): Query |
|
{ |
|
return $this->callFinder($type, $this->selectQuery()->select(), $options); |
|
} |
|
|
|
/** |
|
* Returns the query as passed. |
$options['direction'], |
|
); |
|
|
|
if ($query === null) { |
|
$query = $object->find($data['finder'], $options); |
|
} else { |
|
$query->applyOptions($options); |
|
} |
|
|
} |
|
} |
|
|
|
$data = $this->extractData($object, $params, $settings); |
|
$query = $this->getQuery($object, $query, $data); |
|
|
|
$cleanQuery = clone $query; |
|
$results = $query->all(); |
|
$data['numResults'] = count($results); |
} |
|
|
|
$results = null; |
|
try { |
|
$results = $paginator->paginate( |
|
$table, |
|
$this->request->getQueryParams(), |
|
$settings |
|
); |
], |
|
'limit' => 12 |
|
]; |
|
|
|
$products = $this->paginate($this->Products); |
|
|
|
// Get categories for filtering |
|
$productCategoriesTable = $this->fetchTable('ProductCategories'); |
|
$categories = $productCategoriesTable->find() |
* @throws \UnexpectedValueException If return value of action is not `null` or `ResponseInterface` instance. |
|
*/ |
|
public function invokeAction(Closure $action, array $args): void |
|
{ |
|
$result = $action(...$args); |
|
if ($result !== null && !$result instanceof ResponseInterface) { |
|
throw new UnexpectedValueException(sprintf( |
|
'Controller actions can only return ResponseInterface instance or null. ' |
|
. 'Got %s instead.', |
$args = $this->getActionArgs( |
|
$action, |
|
array_values((array)$controller->getRequest()->getParam('pass')) |
|
); |
|
$controller->invokeAction($action, $args); |
|
|
|
$result = $controller->shutdownProcess(); |
|
if ($result instanceof ResponseInterface) { |
|
return $result; |
|
|
return $runner->run($middlewareQueue, $controller->getRequest(), $this); |
|
} |
|
|
|
return $this->handle($controller->getRequest()); |
|
} |
|
|
|
/** |
|
* Invoke the action. |
|
|
// This is needed for auto-wiring. Should be removed in 5.x |
|
$container->add(ComponentRegistry::class, $controller->components()); |
|
|
|
return $this->controllerFactory->invoke($controller); |
|
} |
|
} |
|
|
return $middleware->process($request, $this); |
|
} |
|
|
|
if ($this->fallbackHandler) { |
|
return $this->fallbackHandler->handle($request); |
|
} |
|
|
|
return new Response([ |
|
'body' => 'Middleware queue was exhausted without returning a response ' |
} |
|
|
|
// Aucun tenant identifié mais on continue quand même |
|
// Cela permet à d'autres parties de l'application de fonctionner sans tenant |
|
return $handler->handle($request); |
|
} |
|
|
|
/** |
|
* Définir le tenant dans l'objet de requête |
if ($this->queue->valid()) { |
|
$middleware = $this->queue->current(); |
|
$this->queue->next(); |
|
|
|
return $middleware->process($request, $this); |
|
} |
|
|
|
if ($this->fallbackHandler) { |
|
return $this->fallbackHandler->handle($request); |
*/ |
|
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface |
|
{ |
|
if (!in_array($request->getMethod(), $this->methods, true)) { |
|
return $handler->handle($request); |
|
} |
|
[$type] = explode(';', $request->getHeaderLine('Content-Type')); |
|
$type = strtolower($type); |
|
if (!isset($this->parsers[$type])) { |
if ($this->queue->valid()) { |
|
$middleware = $this->queue->current(); |
|
$this->queue->next(); |
|
|
|
return $middleware->process($request, $this); |
|
} |
|
|
|
if ($this->fallbackHandler) { |
|
return $this->fallbackHandler->handle($request); |
); |
|
} |
|
$matching = Router::getRouteCollection()->getMiddleware($middleware); |
|
if (!$matching) { |
|
return $handler->handle($request); |
|
} |
|
|
|
$container = $this->app instanceof ContainerApplicationInterface |
|
? $this->app->getContainer() |
if ($this->queue->valid()) { |
|
$middleware = $this->queue->current(); |
|
$this->queue->next(); |
|
|
|
return $middleware->process($request, $this); |
|
} |
|
|
|
if ($this->fallbackHandler) { |
|
return $this->fallbackHandler->handle($request); |
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface |
|
{ |
|
$url = $request->getUri()->getPath(); |
|
if (strpos($url, '..') !== false || strpos($url, '.') === false) { |
|
return $handler->handle($request); |
|
} |
|
|
|
if (strpos($url, '/.') !== false) { |
|
return $handler->handle($request); |
if ($this->queue->valid()) { |
|
$middleware = $this->queue->current(); |
|
$this->queue->next(); |
|
|
|
return $middleware->process($request, $this); |
|
} |
|
|
|
if ($this->fallbackHandler) { |
|
return $this->fallbackHandler->handle($request); |
*/ |
|
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface |
|
{ |
|
try { |
|
return $handler->handle($request); |
|
} catch (RedirectException $exception) { |
|
return $this->handleRedirect($exception); |
|
} catch (Throwable $exception) { |
|
return $this->handleException($exception, $request); |
if ($this->queue->valid()) { |
|
$middleware = $this->queue->current(); |
|
$this->queue->next(); |
|
|
|
return $middleware->process($request, $this); |
|
} |
|
|
|
if ($this->fallbackHandler) { |
|
return $this->fallbackHandler->handle($request); |
) { |
|
Router::setRequest($request); |
|
} |
|
|
|
return $this->handle($request); |
|
} |
|
|
|
/** |
|
* Handle incoming server request and return a response. |
} |
|
|
|
$this->dispatchEvent('Server.buildMiddleware', ['middleware' => $middleware]); |
|
|
|
$response = $this->runner->run($middleware, $request, $this->app); |
|
|
|
if ($request instanceof ServerRequest) { |
|
$request->getSession()->close(); |
|
} |
// Bind your application to the server. |
|
$server = new Server(new Application(dirname(__DIR__) . '/config')); |
|
|
|
// Run the request/response through the application and emit the response. |
|
$server->emit($server->run()); |
|
|
If you want to customize this error message, create templates/Error/error500.php