Immer, wenn ich versuche und eine Route zu behandeln, die wie controller/foo.xtn
aussieht, klagt Yii Unable to determine the path info of the current request.
. Ich möchte diese Routen handhaben, indem ich xtn
in einen Aktionsparameter umwandle, d.h. actionFoo($xtn)
, aber auch controller/foo?type=xtn
. Mein Plan ist es, eine UrlRule zu schreiben, um dieses Verhalten zu definieren, aber wie kann ich den Fehler bei der Pfadanalyse umgehen?Ermöglicht das Parsen von dateiähnlichen URL-Routen
Ich benutze enablePrettyUrl
, und möchte enableStrictParsing
aber jetzt kann ich ohne es umgehen.
Edit: Was funktioniert und was nicht -
controller/foo/abc?type=xtn ---> actionFoo('abc', 'xtn') # works
controller/foo/abc/xtn ---> actionFoo('abc', 'xtn') # works
controller/foo/abc.xtn ---> actionFoo('abc', 'xtn') # doesn't work
Der Fehler von getPathInfo()
geworfen wird beim Versuch, controller/foo/abc.xtn
zu analysieren, so durch Yü vom Webserver weitergeleitet es wird.
Routing config (PHP internen Webserver für jetzt verwenden):
<?php
// www/routing.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
return false;
} else {
include __DIR__ . '/../web/index.php';
}
die oben Config, kann ich die PHP-Server finden Sie in der REQUEST_URI Variable setzt, die, was Yü ist liest.
'REQUEST_URI' => '/controller/foo/abc.xtn?app=4'
Also ich glaube nicht, dass dies ein Webserverproblem ist. Hier ist der einzige signifikante Unterschied in $ _SERVER-Arrays:
# fails in getPathInfo()
'REQUEST_URI' => '/feeds/strings/en.json?app=4',
'SCRIPT_NAME' => '/feeds/strings/en.json',
'SCRIPT_FILENAME' => '/Users/darvids0n/NetBeansProjects/php-web-services/web/www/routing.php',
'PHP_SELF' => '/feeds/strings/en.json',
# works
'REQUEST_URI' => '/feeds/strings/en?app=4',
'SCRIPT_NAME' => '/index.php',
'SCRIPT_FILENAME' => '/Users/darvids0n/NetBeansProjects/php-web-services/web/index.php',
'PATH_INFO' => '/feeds/strings/en',
'PHP_SELF' => '/index.php/feeds/strings/en',
Wenn Sie lesen Yü die source code, aber Sie werden sehen, dass der Mangel an PATH_INFO nicht wirklich in das Scheitern Faktor zu ‚Pfadinformationen bestimmen‘.
nicht sicher, ob ich bin Ihnen zu folgen, wie das hilft. Unabhängig von meinen URL-Regeln ist einer der ersten Schritte beim Routing der Anfrage der Aufruf von ['getPathInfo()'] (https://github.com/yiisoft/yii2/blob/master/framework/web/UrlManager.php# L237). Dies löst eine Ausnahme aus, bevor wir mit der Iteration der Regeln beginnen. – darvids0n
Oh, in diesem Fall gibt es ein Problem mit Ihrer Serverkonfiguration. Ist es Apache? Könnten Sie Ihre Host-Einstellungen einfügen, wenn dies der Fall ist? – Bizley
Pasted Routing Config und ein paar andere Dinge. – darvids0n