ERR_CONNECTION_RESET při pokusu o přístup k tabulce
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- JHadamcik
- Člen | 47
Ahoj,
mám PostgreSQL databázi, v projektu mám translator a problém mám ten, že
když se pokouším v startup metodě BasePresenteru nastavit jazyk translatoru
podle domény na které jsem a podívám se do databáze jazyků, jaký mám pro
danou doménu zvolit jazyk, tak aplikace skončí chybou ERR_CONNECTION_RESET a
nedostanu ani laděnku.
Níže najdete přibližně způsob, jakým aplikace funguje
BasePresenter:
/** @var \App\Model\LanguagesRepository @inject */
public $languages;
protected function startup() {
parent::startup();
$this->translator->setLocale($this->getLanguage());
}
/**
* Returns current language code
* return string
*/
public function getLanguage() {
$language = $this->languages->getByDomain($this->httpRequest->getUrl()->host);
if($language !== FALSE) {
return $language->id;
}
else {
return 'cs';
}
}
LanguagesRepository (extends Repository):
public function getByDomain($domain) {
return $this->getOne(array(
'domain' => $domain
));
}
Repository:
/**
* Finds one item by array
* @param array $conds
* @return \Nette\Database\Table\ActiveRow|FALSE
*/
public function getOne(array $conds)
{
return $this->getAll($conds)->limit(1)->fetch();
}
/**
* Finds items by filter
* @param array $filters
* @return \Nette\Database\Table\Selection
*/
public function getAll(array $filters = array())
{
foreach ($filters as $filter => $value) {
if ($value == NULL) {
unset($filters[$filter]);
}
}
return $this->getTable()->where($filters);
}
/**
* Returns all items from database
* @return \Nette\Database\Table\Selection
*/
public function getTable()
{
preg_match('#(\w+)Repository$#', get_class($this), $m);
/** Až sem to dojde, ale následující řádek způsobí tu chybu.
* Před $this->context se ještě dostane, regulární výraz taky vyhodnotí správně,
* ale volání table to shodí.
*/
return $this->context->table($this->table !== NULL ? $this->table : lcfirst($m[1]));
}