Zjištění údajů pro přihlášení do databáze

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
webdata
Člen | 153
+
0
-

Zdravím,

Rozhodl jsem se že do svého CMS zakomponuji Adminer(a). Ale narazil jsem na problém. Jelikož nechci aby se museli v admineru zadávat přihlašovací údaje, tak bych rád tyto udaje admineru předal. Což není problém a řešení jak to udělat už mám.

Problém je v tom, že mám přihlášení do databáze řešené jako službu a tudíš vše mám vo config.neon
a to takto:

.
.
.
services:
	database:
		class: NConnection
		arguments: ['mysql:host=localhost;dbname=nazevdatabaze', 'root', 'root']

	model:
		class: Model
		arguments: [@database, @cacheStorage]
.
.
.

Otázka zní. Jak se mám dostat v presenteru k následujícím údajům:
host, dbname, username a password?

Předem dík za radu.

Verze Nette: Nette Framework 2.0-beta (revision 8a3182e released on 2011–10–11)

Michal Vyšinský
Člen | 608
+
0
-

Myslím, že by to mělo jít takto:

$this->context->parameters["database"]["host"]
$this->context->parameters["database"]["dbname"]
$this->context->parameters["database"]["username"]
$this->context->parameters["database"]["password"]

Edit: jestli to ovšem máš v sekci „database“ jestli ne, tak [„database“] vynech

Editoval CherryBoss (9. 2. 2012 19:05)

webdata
Člen | 153
+
0
-

Dík za radu, ale bohužel parameters není definovaný.

Pokud udělám dump v presenteru

dump($this);

Tak mám jakž takž přístupk k tomuto:

AdminerPresenter(34) {
   showAdminPanel protected => TRUE
   breadcrumbs protected => array(0)
   pageId protected => NULL
   menuId protected => NULL
   isPageDefault protected => FALSE
   filesDir protected => "C:\\xampp\htdocs\LiteCms\cms/../files/" (37)
   onShutdown => NULL
   request private => NPresenterRequest(7) {
      method private => "GET" (3)
      flags private => array(1) {
         secured => FALSE
      }
      name private => "Adminer" (7)
      params private => array(2) {
         action => "default" (7)
         id => NULL
      }
      post private => array(0)
      files private => array(0)
      frozen private => TRUE
   }
   response private => NULL
   autoCanonicalize => TRUE
   absoluteUrls => FALSE
   globalParams private => array(0)
   globalState private => NULL
   globalStateSinces private => NULL
   action private => "default" (7)
   view private => "default" (7)
   layout private => NULL
   payload private => stdClass(0)
   signalReceiver private => ""
   signal private => NULL
   ajaxMode private => FALSE
   startupCheck private => TRUE
   lastCreatedRequest private => NULL
   lastCreatedRequestFlag private => NULL
   context private => NDiContainer(6) {
      params => array(8) {
         productionMode => FALSE
         consoleMode => FALSE
         wwwDir => "C:\\xampp\htdocs\LiteCms" (23)
         appDir => "C:\\xampp\htdocs\LiteCms\cms" (27)
         libsDir => "C:\\xampp\htdocs\LiteCms\cms/../libs" (35)
         tempDir => "C:\\xampp\htdocs\LiteCms\cms/_temp" (33)
         developmentMode => TRUE
         menuMaxLevels => 2
      }
      registry private => array(18) {
         container => NDiContainer(6) { *RECURSION* }
         application => NApplication(11) { ... }
         presenterFactory => NPresenterFactory(4) { ... }
         router => NRouteList(3) { ... }
         httpRequest => NHttpRequest(9) { ... }
         httpResponse => NHttpResponse(5) { ... }
         httpContext => NULL
         session => NSession(4) { ... }
         user => NUser(7) { ... }
         cacheStorage => NFileStorage(3) { ... }
         templateCacheStorage => NPhpFileStorage(4) { ... }
         cacheJournal => NFileJournal(9) { ... }
         mailer => NULL
         robotLoader => NRobotLoader(8) { ... }
         database => NConnection(7) { ... }
         model => NULL
         authenticator => NULL
         modelLoader => ModelLoader(2) { ... }
      }
      factories private => array(5) {
         router => array(2) [ ... ]
         httpContext => array(2) [ ... ]
         mailer => array(2) [ ... ]
         model => array(2) [ ... ]
         authenticator => array(2) [ ... ]
      }
      tags private => array(18) {
         container => NULL
         application => NULL
         presenterFactory => NULL
         router => NULL
         httpRequest => NULL
         httpResponse => NULL
         httpContext => NULL
         session => NULL
         user => NULL
         cacheStorage => NULL
         templateCacheStorage => NULL
         cacheJournal => NULL
         mailer => NULL
         robotLoader => array(1) { ... }
         database => NULL
         model => NULL
         authenticator => NULL
         modelLoader => NULL
      }
      creating private => array(0)
      frozen private => FALSE
   }
   template private => NULL
   invalidSnippets private => array(0)
   snippetMode => NULL
   params protected => array(2) {
      action => "default" (7)
      id => NULL
   }
   components private => array(0)
   cloning private => NULL
   parent private => NULL
   name private => "Adminer" (7)
   monitors private => array(1) {
      NPresenter => array(4) [
         0 => NULL
         1 => NULL
         2 => NULL
         3 => TRUE
      ]
   }
}

Takže takhle se dostanu pouze k řetězci připojení.

dump($this->context->database->dsn);

Který vypíše: „mysql:host=localhost;dbname=lite-cms“ (36)

Michal Vyšinský
Člen | 608
+
0
-

Tak zkus místo parameters použít params. Teď v novém je params označeno za DEPRECATED ale možná v tvé verzi je ještě params.

webdata
Člen | 153
+
0
-

Taky ne.

dump($this->context->params);

Výstup:

array(8) {
   productionMode => FALSE
   consoleMode => FALSE
   wwwDir => "C:\\xampp\htdocs\LiteCms" (23)
   appDir => "C:\\xampp\htdocs\LiteCms\cms" (27)
   libsDir => "C:\\xampp\htdocs\LiteCms\cms/../libs" (35)
   tempDir => "C:\\xampp\htdocs\LiteCms\cms/_temp" (33)
   developmentMode => TRUE
   menuMaxLevels => 2
}
Aurielle
Člen | 1281
+
0
-

Samozřejmě, že sekce ‚database‘ neexistuje, protože strkáš parametry přímo do konstruktoru NConnection. Když je v configu nadefinuješ na správném místě a poté na ně jen odkážeš, dostaneš přesně to, co potřebuješ.