redhat2
پنج شنبه 19 بهمن 1391, 11:38 صبح
سلام به دوستان : این کدمن هست :
request :
class Request {
private static $_breakUrl;
public static $_controller;
private static $_GETurl;
public static function breakUrl($url = null) {
$url = trim($url ? $url : $_GET['url'], '/');
$urlBreak = explode('/', $url);
self::$_breakUrl = array(
'controller' => isset($urlBreak[0]) ? $urlBreak[0] : 'index',
'action' => isset($urlBreak[1]) ? $urlBreak[1] : 'index',
'query' => isset($urlBreak[2]) ? $urlBreak[2] : true
);
$_GET = array_merge($_GET, self::$_breakUrl);
self::$_GETurl = $_GET;
}
public static function getController() {
return self::$_GETurl['controller'];
}
public static function getAction() {
return isset(self::$_GETurl['action']) ? self::$_GETurl['action'] : null;
}
}
index.php :
<?php
require_once('libs/config.php');
require_once('libs/autoloader.php');
$url = new Request();
$url = Request::breakUrl();
$value = Request::getController();
$name = Request::getAction();
echo $value;
echo "<br>";
echo $name;
?>
این هم htaccess :
RewriteEngine On
RewriteCond %{REQUEST_FILENMAE} !-d
RewriteCond %{REQUEST_FILENMAE} !-f
RewriteCond %{REQUEST_FILENMAE} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
من وقتی که url ام به این شکل هست :
localhost/mvc/controller/action درست کار میکنه
یا وقتی که آدرسم اینشکلی هست درست کار میکنه :
localhost/mvc/controller
ولی وقتی که آدرسم اینطوری میشه :
localhost/mvc
به جای اینکه controller من index باشه ، index.php هست در صورتی که Action من به درستی index را نشنون میده ؟ مشکل کجاست ؟
---------------------------------------------------------------------------------------------
یه سوال دیگه هم داشتم : یه جا دیدم که طرف اومده بود توی فایل Request به جای
$_get[] ،
$_SERVER['REQUEST_URI'] و آرگومان تابع ($url) اون هم null بود ولی تابع به درستی کار میکرد ولی تویه تابع من کار نمیکنه ؟ مشکل این کجاست
request :
class Request {
private static $_breakUrl;
public static $_controller;
private static $_GETurl;
public static function breakUrl($url = null) {
$url = trim($url ? $url : $_GET['url'], '/');
$urlBreak = explode('/', $url);
self::$_breakUrl = array(
'controller' => isset($urlBreak[0]) ? $urlBreak[0] : 'index',
'action' => isset($urlBreak[1]) ? $urlBreak[1] : 'index',
'query' => isset($urlBreak[2]) ? $urlBreak[2] : true
);
$_GET = array_merge($_GET, self::$_breakUrl);
self::$_GETurl = $_GET;
}
public static function getController() {
return self::$_GETurl['controller'];
}
public static function getAction() {
return isset(self::$_GETurl['action']) ? self::$_GETurl['action'] : null;
}
}
index.php :
<?php
require_once('libs/config.php');
require_once('libs/autoloader.php');
$url = new Request();
$url = Request::breakUrl();
$value = Request::getController();
$name = Request::getAction();
echo $value;
echo "<br>";
echo $name;
?>
این هم htaccess :
RewriteEngine On
RewriteCond %{REQUEST_FILENMAE} !-d
RewriteCond %{REQUEST_FILENMAE} !-f
RewriteCond %{REQUEST_FILENMAE} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
من وقتی که url ام به این شکل هست :
localhost/mvc/controller/action درست کار میکنه
یا وقتی که آدرسم اینشکلی هست درست کار میکنه :
localhost/mvc/controller
ولی وقتی که آدرسم اینطوری میشه :
localhost/mvc
به جای اینکه controller من index باشه ، index.php هست در صورتی که Action من به درستی index را نشنون میده ؟ مشکل کجاست ؟
---------------------------------------------------------------------------------------------
یه سوال دیگه هم داشتم : یه جا دیدم که طرف اومده بود توی فایل Request به جای
$_get[] ،
$_SERVER['REQUEST_URI'] و آرگومان تابع ($url) اون هم null بود ولی تابع به درستی کار میکرد ولی تویه تابع من کار نمیکنه ؟ مشکل این کجاست