【发布时间】:2014-09-25 15:36:33
【问题描述】:
我是 MVC 新手,我在下面创建了一个路由类,它工作正常,但是当我转到索引页面时,导航锚点 href 是正确的。但是当我移动到其他控制器时,url 第一个字符串 url-0 仍然是前一个控制器,它会更改所有导航 href 地址 base+前一个控制器,例如,如果我在 indexController/index 上,它将显示所有页面数据库。当我想通过导航锚调用 logincontroller 时,logincontroller href 更改为 indecontroller/loginController/login。正确的登录 href 地址是 loginController/login。我的 htaccess 和路由类在下面。和文件夹结构。
mvc 应用控制器 indexcontroller.php userController.php 模型 user.php page.php 库 核心 App.php Controller.php 包括navigation.php 样式样式.css 图片 js 脚本 index.php
我希望有人可以帮助我,我尝试过但还是成功了请帮助提前谢谢。
RewriteEngine On
RewriteBase /socialNetwork
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^([a-zA-Z0-9\/\-_]+)\.?([a-zA-Z]+)?$ index.php?url=$1&extension=$2 [QSA,L]
class App
{
protected $controller = 'indexController';
protected $method = 'index';
protected $params = array();
public function __construct()
{
$url = $this->parseUrl();
//print_r($url);
if (isset($url[0]))
{
if (file_exists('app/controllers/'.$url[0].'.php'))
{
//$url = ('../app/controllers/'.$url[0].'.php');
$this->controller = $url[0];
//echo ($this->controller);
unset($url[0]);
}
}
require_once('app/controllers/'.$this->controller.'.php');
$this->controller = new $this->controller;
if (isset($url[1]))
{
if (method_exists($this->controller,$url[1]))
{
$this->method = $url[1];
unset($url[1]);
}
}
$this->params = $url ? array_values($url) : array();
call_user_func_array(array($this->controller,$this->method),$this->params);
}
public function parseUrl()
{
if (isset($_GET['url']))
{
return $url =explode('/',filter_var(rtrim($_GET['url'],'/'),FILTER_SANITIZE_URL));
}
}
}
这是我的索引页。
<header>
<img width="960" height="100" src="http://localhost/socialNetwork/images/bgheader.png">
</header>
<?php
include_once("include/navigation.php");?>
<section class="content">
<?php
require_once('app/init.php');
$app = new App;
?>
</section>
【问题讨论】:
标签: php navigation url-routing