RouterFactory, https, static a použití $this (Fatal Error: Using $this when not in object context)

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

Zdravím, na jednom serveru jsem zprovoznil SSL od Let's Encrypt.

Pokud si přeju výhradně HTTPS (Secure), Apache všechno přesměrovává, ale aplikace v Nette 2.3 hlásí smyčku v přesměrování. Je třeba upravit Router přidáním Route::$defaultFlags = Route::SECURED;.

Jenže na lokálu ssl nemám a chtěl bych, aby se HTTPS použilo podle toho.

Upravím si RouterFactory, ale protože je STATIC, nemůžu použít $this:

// file: ../app/router/RouterFactory.php
class RouterFactory
{
	/**
	 * @return Nette\Application\IRouter
	 */
	public static function createRouter()
	{
       if($this->httpRequest->isSecured()) { // << Fatal Error: Using $this when not in object context
          Route::$defaultFlags = Route::SECURED;
        }
		$router = new RouteList;
		$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
		return $router;
	}
}

Mohl bych prosím dostat radu, jak to přepsat, abych zajistil, že to bude fungovat podle toho, jestli zadám http nebo https?
Dík.

Felix
Nette Core | 1186
+
+3
-

Pohodlne muzes zmenit RouterFactory na plnohodnotnou sluzbu zaregistrovanou pres neon.

class RouterFactory
{

	private $httpRequest;

	public function __construct(Nette\Http\Request $request) {
		$this->httpRequest = $request;
	}

    /**
     * @return Nette\Application\IRouter
     */
    public function create()
    {
       if($this->httpRequest->isSecured()) {
          Route::$defaultFlags = Route::SECURED;
        }
        $router = new RouteList;
        $router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
        return $router;
    }
}
services:
	- RouterFactory

	router:
		create: @RouterFactory::create()
David Grudl
Nette Core | 8111
+
+3
-
public static function createRouter(Nette\Http\Request $httpRequest)
{
   if ($httpRequest->isSecured()) {
      Route::$defaultFlags = Route::SECURED;
   }
ludek
Člen | 83
+
0
-

Díky moc oběma.